实验3PLSQL编程

发布时间 : 星期日 文章实验3PLSQL编程更新完毕开始阅读

.

实验三 PL/SQL编程

1.PL/SQL块处理

定义一个包含声明、执行和异常处理的块 查询EMP表中职工号7788的工资,输出工资的值并且如果工资小于3000那么把工资更改为3000,异常部分对NO_DATA_FOUND异常进行处理,输出没有该员工。

如果想运行缓冲区的内容,那么可以用RUN命令或者/命令;serveroutput需要设置为on 2.记录类型的使用 创建一个记录类型v_record,类型包含name,salary,job,deptno等分量,要求记录类型的分量的数据类型和emp表中列的数据类型一致(%type实现)。创建一个变量,变量类型为v_ record,读取EMP表中职工号为7788的ename,sal,job,deptno为该变量赋值,输出变量的分量。 3.条件语句的使用

分别用IF语句和CASE语句实现以下要求:输入一个员工号,修改该员工的工资,如果该员工职位是CLERK,工资增加100;若为SALESMAN,工资增加160;若为ANALYST,工资增加200;否则增加300。 4. 循环和显示游标的使用

分别用简单循环、WHILE循环、FOR循环以及显示游标统计并输出各个部门的人数以及平均工资

5.用隐式游标实现以下要求:修改部门号为50的部门地址为‘BEIJING’。如果该部门不存在,则向dept表中插入一个部门号为50,地址为‘BEIJING’的记录。 6.创建一个显示雇员总人数的存储过程emp_count,并执行该存储过程

7. 编写显示雇员信息的存储过程EMP_LIST,并引用EMP_COUNT存储过程

8. 创建函数,实现功能为:在scott.emp表和scott.dept表中查询出任意给定职工号的职工姓名及职工所在部门的名称。

9. 创建触发器,实现更新dept表中的deptno值,级联更新emp表中相应值。 10. 对存储过程、函数及触发器实现查看、修改、删除等基本操作。

主要算法和程序清单:

1.

DECLARE

v_empno emp.empno%TYPE:=7788; v_sal emp.sal%TYPE; v_add emp.sal%TYPE; BEGIN

SELECT sal INTO v_sal FROM emp WHERE empno=v_empno; IF v_sal<3000 THEN v_add:=3000;

.

.

ELSE

dbms_output.put_line('sal>3000'); END IF;

UPDATE emp SET sal=v_add WHERE empno=v_empno; END; /

2. declare type v_record is record ( name emp.ename%type, salary emp.sal%type, job emp.job%type, deptno emp.deptno%type );

empinfo v_record;--定义变量 begin select ename,sal,job,deptno into empinfo from emp where empno = 7788; dbms_output.put_line('雇员'||empinfo.name||'的职务是:'||empinfo.job||'工资是:'||empinfo.salary||'部门号是:'||empinfo.deptno); end; /

.

.

3.

declare

cursor c_emp is select * from scott.emp for update; v_increment number; begin

for v_emp in c_emp loop case v_emp.deptno

when 10 then v_increment:=100; when 20 then v_increment:=160; when 30 then v_increment:=200; else v_increment:=300; end case;

update scott.emp set sal = sal+v_increment where current of c_emp; end loop; end;

.

.

4.

5. begin

update scott.dept

set loc = 'BEIJING' where deptno=50; if sql%notfound then

insert into scott.dept(deptno,loc) values(50,'BEIJING'); dbms_output.put_line('插入成功!'); ELSE

dbms_output.put_line('更新成共'); end if; end;

.

联系合同范文客服:xxxxx#qq.com(#替换为@)