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. alarm 和 sleep

    http://blog.sina.com.cn/s/blog_6a1837e90100uhl3.html alarm也称为闹钟函数,alarm()用来设置信号SIGALRM在经过参数seconds指定 ...

  2. js 获取iframe页面元素

      js 获取iframe页面元素 CreationTime--2018年8月16日18点00分 Author:Marydon <!-- chart图表 --> <iframe id ...

  3. ubuntu开启ftp服务

    首先再防火墙中开启21和20端口 iptables -A INPUT -p tcp --dport -j ACCEPT iptables -A INPUT -p tcp --dport -j ACCE ...

  4. ubuntu——更新、编译、启动内核

    步骤如下: 1.make mrproper Linux下面去编译项目之前,一般常会用make mrproper去先删除之前编译所生成的文件和配置文件,备份文件等,其中,mrproper和distcle ...

  5. Android开发优化之——从代码角度进行优化

    通常我们写程序,都是在项目计划的压力下完成的,此时完成的代码可以完成具体业务逻 辑,但是性能不一定是最优化的.一般来说,优秀的程序员在写完代码之后都会不断的对代码进行重构.重构的好处有很多,其中一点, ...

  6. Linux-软件包管理-脚本安装包

    打开网页: http://sourceforge.net/projects/webadmin/files/webmin/下载1.6.10软件包 下载并放到linux系统中 ls 查看当前目录下所有信息 ...

  7. C#:数学运算(待补充)

    using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace MyCo ...

  8. 和求余运算巧妙结合的jns指令

    .text:004A78B1  and eax, 80000001h.text:004A78B6  jns short loc_4A78BD.text:004A78B8 dec eax.text:00 ...

  9. 批量修改图像的大小 Python PIL

    #-*-coding:utf-8-*- import os import os.path from PIL import Image import time def ResizeImage(filei ...

  10. json-lib 的maven dependency 异常解决方案

    项目中要用到json-lib,mvnrepository.com查找它的dependency时结果如下: xml 代码   <dependency> <groupId>net. ...