数据库面试题之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 触发器类型 ...
随机推荐
- Python类,特殊方法, __getitem__,__len__, __delitem__
特殊函数一般以__methodname__的形式命名,如:__init__(构造方法), __getitem__. __setitem__(subscriptable所需method), __deli ...
- 金蝶K3,域环境中,无本地用户管理员权限的域用户如何设置注册表权限?
如果该用户是属于Power Users组:只需要给用户添加注册表中的HKEY_LOCAL_MACHINE的SOFTWARE完全控制的权限.(勾选允许父项的继承权限和传播到该对象和所有子对象) 如果该用 ...
- [Swift A] - A Swift Tour
首先说下自己对Swift语言的一点点看法,对于一个写过javascript和常年写java代码的人来说,学习Swift是一件很简单的事情.就像某某人说过,每个人都有弱点和优点,我到目前为止,只是初步的 ...
- How to authenticate a user by uid and password?
原文地址:Authentication options | Basic authorization If you want to use simple binds with user DN and p ...
- .net core json序列化首字符小写和日期格式处理
打开Startup.cs文件,在ConfigureServices方法中添加如下代码 public void ConfigureServices(IServiceCollection services ...
- atitit.html5 vs 原生 app的区别与选择
atitit.html5 vs 原生 app的区别与选择 1. html5的优点 1 1.1. 最大优势::在跨平台(ios苹果,android安卓等) 1 1.2. 开放性 1 1.3. 快速的更 ...
- delphi无边框可拖动窗体
unit UFrmModless; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, ...
- struts2设置加载非默认路径的struts.xml文件解决方案
方案一: 首先我们要明白struts2加载配置文件都是从它自己的jar包和\WEB-INF\classes两个默认的位置加载的,如果你想改变strusts2中的文件的默认加载路径,可以在web项目 ...
- C++虚函数解析(转载)
虚函数详解第一篇:对象内存模型浅析 C++中的虚函数的内部实现机制到底是怎样的呢? 鉴于涉及到的内容有点多,我将分三篇文章来介绍. 第一篇:对象内存模型浅析,这里我将对对象的内存模型进 ...
- 折腾kali linux2.0
偶然的机会了解到了kali linux这个用于渗透测试的linux发行版,于是就从官网下了iso,但是制作启动盘老出错.网上查了下说在linux下用dd命令特别简单,于是转到ubuntu下制作启动盘, ...