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 | ..

SELECT EMP_ID,FOUNDSAL,AGESAL,SUMSAL ,
(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面试题的更多相关文章

  1. 查询oracle数据库,返回的数据是乱码。 PL/SQL正常。

    查询oracle数据库,返回的数据是乱码. PL/SQL正常. 解决方案如下:

  2. Oracle数据导出导入(PL/SQL工具)

    做了那么多年的开发第一次写博客,一开始是没想过要写博客的,后来想写,却一直不敢写,一个是怕自己写的不好,误导人家,二来是不太自信.现在想起写博客是因为,真正的勇士敢于面临淋漓的鲜血,希望能提高自己,也 ...

  3. 解决pl/sql developer中数据库插入数据乱码问题

    最近学习SSM项目开发,用到oracle数据库, 使用管理软件PL/sql developer往数据库表中插入数据时记录乱码.  结果如下: 可以看到中文数据都乱码成了???????问号, 看了网上各 ...

  4. Oracle PL/SQL块

    PL/SQL块 简介 :PL/SQL是 Procedure Language & Structured Query Language 的缩写,是ORACLE公司对标准数据库语言的扩展 PL/S ...

  5. ORACLE PL/SQL编程详解

    ORACLE PL/SQL编程详解 编程详解 SQL语言只是访问.操作数据库的语言,并不是一种具有流程控制的程序设计语言,而只有程序设计语言才能用于应用软件的开发.PL /SQL是一种高级数据库程序设 ...

  6. pl/sql和sql的区别

    源地址:https://zhidao.baidu.com/question/187511430.html 1 sql(数据定义语言) 和PL/Sql的区别:答:SQL是结构化查询语言,比较接近自然语言 ...

  7. PL/SQL Developer编码格式设置及中文乱码解决方案

    1.PL/SQL Developer中文字段显示乱码 原因:因为数据库的编号格式和pl /sql developer的编码格式不统一造成的. 2.PL/SQL Developer编码格式设置详细的解决 ...

  8. PL/SQL Developer 使用中文条件查询时无数据的解决方法

    PL/SQL Developer 使用中文条件查询时无数据,这是由于字符集的不一致导致的. 执行以下sql命令:select userenv('language') from dual; 显示:SIM ...

  9. ORACLE PL/SQL编程之八:把触发器说透

    原文:ORACLE PL/SQL编程之八:把触发器说透 ORACLE PL/SQL编程之八: 把触发器说透 大家一定要评论呀,感谢!光发表就花了我将近一个下午. 本篇主要内容如下: 8.1 触发器类型 ...

随机推荐

  1. openerp domain 規則

    oe中的domain多用于自定义搜索条件. domain中的单个条件是一个三个元素组成的元组.第一个是对象的一个column,也就是字段名:第二个是比较运算符``=, !=, & gt;, & ...

  2. Linux lvs DR配置

    三台服务器,(1)做路由.(2)(3)做realserver IP为:192.168.196.121  (1) 192.168.196.122   (2) 192.168.196.123   (3) ...

  3. 音视频技术 即时通讯SDK

    视频流中的DTS/PTS究竟是什么?      DTS(解码时间戳)和PTS(显示时间戳)各自是解码器进行解码和显示帧时相对于SCR(系统參考)的时间戳.SCR能够理解为解码器应该開始从磁盘读取数据时 ...

  4. dll中使用exe中的变量

    注意:输出目录为:Result共享目录 1.exe项目: // EXE.cpp : 定义控制台应用程序的入口点.// #include "stdafx.h" extern" ...

  5. laravel路由之分组路由

    laravel下的分组路由可以嵌套如下: Route::group(['prefix'=>'admin'],function(){ Route::group(['prefix'=>'dtk ...

  6. android:scaleType=&quot;matrix&quot;布局文件载入图片时候的显示方式

    android:scaleType="center" 以原图的几何中心点和ImagView的几何中心点为基准,按图片的原来size居中显示,不缩放,当图片长/宽超过View的长/宽 ...

  7. Ubuntu 15.04 开启远程桌面

    1.安装Xrdp Windows远程桌面使用的是RDP协议,所以ubuntu上就要先安装Xrdp,终端命令行输入安装: sudo apt-get install xrdp vnc4server xba ...

  8. ssm开发系的统架构图

  9. centOS7 配置DNS上外网

    CentOS7 linux下DNS的永久性添加 I.网上很多讲的dns的永久性添加其实都是暂时性添加,重启网卡后就会丢失.代码如下: echo nameserver 8.8.8.8 > /etc ...

  10. phoenix系统创建语句

    CREATE TABLE SYSTEM."CATALOG"( TENANT_ID VARCHAR NULL, TABLE_SCHEM VARCHAR NULL, TABLE_NAM ...