数据库面试题之PL/SQL面试题
create table employee(
id number(10) not null, -- 员工工号
salary number(10,2) default 0 not null, -- 薪水
name varchar2(24) not null -- 姓名
);
第一题: 表结构说明: 1.创建序列seq_employee,该序列每次取的时候它会自动增加,从1开始计数,不设最大值,并且一直累加,不循环。
Create sequence seq_employee start with 1 increment by 1 minvalue 1
nomaxvalue nocycle nocache order;
2.写一个PL/SQL块,插入表user.employee中100条数据。插入该表中字段id用序列seq_employee实现,薪水和姓名字段可以任意填写。
Begin
for i in 1..100 loop
insert into employee
values(seq_employee.nextval,'','son');
end loop;
end;
----这里私自加上自己的复杂点的想发,尽量用上条件--
3.写一个语句块,在语句块中定义一个显式游标,按id升序排列,打印表employee中前十条数据。
declare
cursor cur_emp is select * from employee where id<112 order by id asc;
row_emp cur_emp%rowtype;
begin
open cur_emp;
fetch cur_emp into row_emp;
while cur_emp%found
loop
dbms_output.put_line(row_emp.id||row_emp.salary||row_emp.name);
fetch cur_emp into row_emp;
end loop;
close cur_emp;
end;
/
4.创建存储过程p_employee,输入员工薪水范围,返回员工工号、姓名、薪水结果集,结果集按员工薪水升序排列。
参照http://blog.csdn.net/szstephenzhou/article/details/7766626
----首先创建包,oracle中的包中可以包含函数,存储过程和游标的定义。
CREATE OR REPLACE package emp_package
IS
type emp_cursor
IS ref CURSOR;
PROCEDURE emp_procedure(
hisal employee.salary%type,
losal employee.salary%type,
Re_cursor OUT emp_cursor);
END;
/
----再创建包体
CREATE OR REPLACE PROCEDURE EMP_PROCEDURE(
LOSAL IN NUMBER,HISAL IN NUMBER,SAL_CURSOR out EMP_PACKAGE.EMP_CURSOR)
IS
BEGIN
OPEN SAL_CURSOR FOR
SELECT * FROM EMPLOYEE WHERE SALARY BETWEEN LOSAL AND HISAL order by salary desc;
END EMP_PROCEDURE;
/
----执行过程结果
var sal_cursor refcursor
exec emp_procedure(100,100000,:sal_cursor);
5.创建函数f_employee实现更新员工薪水的功能,将薪水低于2000且姓wang的员工薪水加5%,其他不变,更新成功则返回0,否则返回1。
CREATE OR REPLACE FUNCTION EMP_FUNCTION(
SAL NUMBER,FIRSTNAME CHAR)
RETURN BOOLEAN
AS
BEGIN
UPDATE EMPLOYEE SET SALARY=1.05*SALARY WHERE SALARY<SAL AND NAME=FIRSTNAME;
RETURN ;
else
return ;
end;
/
6.写一个匿名语句块,用于执行函数f_employee,并打印执行该函数的结果。
7.创建存储过程p_create_emp,用于判断表employee是否存在,如果存在则删除该表。
8.写一个匿名语句块,用于执行存储过程p_create_emp。
第二题: Wages 表 Emp_id | 基本工资| 工龄工资|
------------------------------------------- 1 | 1.00 | 1.00 |
------------------------------------------- 2 | 1.00 | 2.00 |
------------------------------------------- 3 | 1.00 | 3.00 |
------------------------------------------- 4 | 1.00 | 4.00 |
------------------------------------------- 得到如下结果: Emp_id | 基本工资| 工龄工资 | 合计 | 名次
------------------------------------------------------------------ 1 | 1.00 | 1.00 |2.00 | x
------------------------------------------------------------------ 2 | 1.00 | 2.00 |3.00 | y
------------------------------------------------------------------ 3 | 1.00 | 3.00 |4.00 | ..
------------------------------------------------------------------ 4 | 1.00 | 4.00 |5.00 | ..
(case sumsal when 2 then 'X'
when 3 then 'Y'
ELSE 'Z'
end) as grade
from
(select emp_id,foundsal,agesal,foundsal+agesal as sumsal from
WAGES);
------------------------------------------------------------------
第三题: 3、有如下信息: 起始地 目的地 距离(公里) A B 1000
A C 1100
A D 900
A E 400
B D 300
D F 600
E A 400
F G 1000
C B 600
请用SQL语句或一段代码写出从A出发,可达到的目的地(包括间接方式)以及公里数。
数据库面试题之PL/SQL面试题的更多相关文章
- 查询oracle数据库,返回的数据是乱码。 PL/SQL正常。
查询oracle数据库,返回的数据是乱码. PL/SQL正常. 解决方案如下:
- Oracle数据导出导入(PL/SQL工具)
做了那么多年的开发第一次写博客,一开始是没想过要写博客的,后来想写,却一直不敢写,一个是怕自己写的不好,误导人家,二来是不太自信.现在想起写博客是因为,真正的勇士敢于面临淋漓的鲜血,希望能提高自己,也 ...
- 解决pl/sql developer中数据库插入数据乱码问题
最近学习SSM项目开发,用到oracle数据库, 使用管理软件PL/sql developer往数据库表中插入数据时记录乱码. 结果如下: 可以看到中文数据都乱码成了???????问号, 看了网上各 ...
- Oracle PL/SQL块
PL/SQL块 简介 :PL/SQL是 Procedure Language & Structured Query Language 的缩写,是ORACLE公司对标准数据库语言的扩展 PL/S ...
- ORACLE PL/SQL编程详解
ORACLE PL/SQL编程详解 编程详解 SQL语言只是访问.操作数据库的语言,并不是一种具有流程控制的程序设计语言,而只有程序设计语言才能用于应用软件的开发.PL /SQL是一种高级数据库程序设 ...
- pl/sql和sql的区别
源地址:https://zhidao.baidu.com/question/187511430.html 1 sql(数据定义语言) 和PL/Sql的区别:答:SQL是结构化查询语言,比较接近自然语言 ...
- PL/SQL Developer编码格式设置及中文乱码解决方案
1.PL/SQL Developer中文字段显示乱码 原因:因为数据库的编号格式和pl /sql developer的编码格式不统一造成的. 2.PL/SQL Developer编码格式设置详细的解决 ...
- PL/SQL Developer 使用中文条件查询时无数据的解决方法
PL/SQL Developer 使用中文条件查询时无数据,这是由于字符集的不一致导致的. 执行以下sql命令:select userenv('language') from dual; 显示:SIM ...
- ORACLE PL/SQL编程之八:把触发器说透
原文:ORACLE PL/SQL编程之八:把触发器说透 ORACLE PL/SQL编程之八: 把触发器说透 大家一定要评论呀,感谢!光发表就花了我将近一个下午. 本篇主要内容如下: 8.1 触发器类型 ...
随机推荐
- nuget命令的用法:
nuget命令的用法: Install-Package 安装包 -Version 4.3.1 参数指定版本 Uninstall-Package 卸载包 Update-Package 更新包 Get ...
- ThreadPoolExecutor中策略的选择与工作队列的选择(java线程池)
工作原理 1.线程池刚创建时,里面没有一个线程.任务队列是作为参数传进来的.不过,就算队列里面有任务,线程池也不会马上执行它们. 2.当调用 execute() 方法添加一个任务时,线程池会做如下判断 ...
- 【BIRT】Format Number下的Round Mode中的各项解释
页面展示 从上图我们可以才看出,共有Half Up.Half Down.Half Even.Up.Down.Celling.Floor.Unnecessary 下面一一介绍每一个的意思 Half Up ...
- 如何在C++中调用C程序
注意这里的C调用C++或者C++调用C意思是.c文件中调用.cpp文件中代码,或者相反. C++和C是两种完全不同的编译链接处理方式,如果直接在C++里面调用C函数,会找不到函数体,报链接错误. 要解 ...
- powershell 卸载KB hotfix补丁
- AutoFac文档5(转载)
目录 开始 Registering components 控制范围和生命周期 用模块结构化Autofac xml配置 与.net集成 深入理解Autofac 指导 关于 词汇表 扫描 autofac可 ...
- atitit.loading的设计与实现控件选型attilax 总结
atitit.loading的设计与实现控件选型attilax 总结 1. Percentage Loader(推荐) 1 1.1. 起始百分比::调整 progress 1 2. CSS3 Loa ...
- docker使用问题总结
1. docker报[Error response from daemon: Error running DeviceCreate (createSnapDevice) dm_task_run fai ...
- JSON 之GSON 解析
一. 谷歌GSON这个Java类库可以把Java对象转换成JSON,也可以把JSON字符串转换成一个相等的Java对象.Gson支持任意复杂Java对象包括没有源代码的对象. 二.Gson解析Json ...
- bazel-编译一个源文件生成可执行程序
demo1 使用bazel编译一个源文件生成可执行程序简单示例 demo1目录树 demo1 ├── app │ ├── BUILD │ └── hello_world.cpp ├── README. ...