数据库面试题之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 触发器类型 ...
随机推荐
- 2.4.1 用NPOI操作EXCEL关于HSSFClientAnchor(dx1,dy1,dx2,dy2,col1,row1,col2,row2)的参数
NPOI教程:http://www.cnblogs.com/atao/archive/2009/11/15/1603528.html 之所有说NPOI强大,是因为常用的Excel操作她都可以通过编程的 ...
- html单行注释符号
html单行注释符号 2014-10-02 15:33 来源: IT技术学习网原创 阅读: 589 说到html的单行注释,比较特别,html中确确实实没有专门的单行注释符号.不管是//还是#,在 ...
- c#:treeview双击某个节点的事件
NodeMouseDoubleClick事件 事例: private void treeView1_NodeMouseDoubleClick(object sender, TreeNodeMouseC ...
- web普通项目映射为maven项目
localhost:8080/yourWebLocation 访问 前一个插件是映射项目路径成maven的格式 后一个插件是映射访问网址所需要的东西 <build> <!-- 发布 ...
- 类声明、类作用域、前向声明、this指针、嵌套类、PIMPL 技法 等
一.类声明 //类是一种用户自定义类型,声明形式: class 类名称 { public: 公有成员(外部接口) private: 私有 ...
- 概念了解:CGI,FastCGI,PHP-CGI与PHP-FPM 各公共网关接口介绍
CGI CGI全称是“公共网关接口”(Common Gateway Interface),HTTP服务器与你的或其它机器上的程序进行“交谈”的一种工具,其程序须运行在网络服务器上. CGI可以用任何一 ...
- c语言优先级和结合性
C语言的运算符众多,具有不同的优先级和结合性,我们将它们全部列了出来,方便大家对比和记忆: 优先级 运算符 名称或含义 使用形式 结合方向 说明 1 [] 数组下标 数组名[常量表达式] 左到右 ...
- [svc]ip routing和no ip routing
ip routing: 查路由表, 如果ping的目的在RT中没有,不发出任何包(arp也不会发出) 如果RT中存在,则arp 下一跳,相当于no ip routing+配置网关 注: 静态路由: 指 ...
- Makefile学习之路6——让编译环境更加有序
在大多项目中都会合理设计目录结构来提高维护性,在编译一个项目时会产生大量中间文件,如果中间文件直接和源文件放在一起,就显得杂乱而不利于维护.在为现在这个complicated项目编写makefile之 ...
- 访问子节点childNodes
访问子节点childNodes 访问选定元素节点下的所有子节点的列表,返回的值可以看作是一个数组,他具有length属性. 语法: elementNode.childNodes 注意: 如果选定的节点 ...