2022年数据库上机-实验 .pdf
实验二PL/SQL 编程(1)目的和要求:1熟悉 PL/SQL 基本结构2熟悉变量的分类及其使用3熟悉各种运算符的使用4掌握 PL/SQL 的流程控制语句的使用5掌握异常处理的使用实验内容:SCOTT 用户拥有 DEPT、EMP、SALGRADE 表对象,其中,DEPT 是部门信息表,包括:部门编号、部门名称、部门地址三个属性,即DEPT(DEPTNO,DNAME,LOC)。EMP 是员工信息表,包括:员工编号、员工姓名、职位、上级领导、雇用时间、薪金、佣金、所属部门编号八个属性,即 EMP(EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO)。SALGRADE 是工资等级表,包括:工资等级、最低工资、最高工资三个属性,即 SALGRADE(GRADE,LOSAL,HISAL)。1编写一段 PL/SQL 程序,显示出职工的号码为7369 的职工的信息。SELECT EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DNAME FROM SCOTT.EMP,SCOTT.DEPT WHERE SCOTT.EMP.DEPTNO=SCOTT.DEPT.DEPTNO AND SCOTT.EMP.EMPNO=7369;set serveroutpu on declare empno scott.emp.empno%type;ename scott.emp.ename%type;名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 5 页 -job scott.emp.job%type;mgr scott.emp.MGR%type;hiredate scott.emp.hiredate%type;sal scott.emp.sal%type;comm m%type;dname scott.dept.dname%type;begin SELECT EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DNAME into empno,ename,job,mgr,hiredate,sal,comm,dname FROM SCOTT.EMP,SCOTT.DEPT WHERE SCOTT.EMP.DEPTNO=SCOTT.DEPT.DEPTNO AND SCOTT.EMP.EMPNO=7369;dbms_output.put_line(empno|ename|job|mgr|hiredate|sal|comm|dname);end;/2编写一段 PL/SQL 程序,显示出 DEPT 表中部门号码等于10 的所有信息。SELECT*FROM SCOTT.DEPT WHERE DEPTNO=10 3编写一段 PL/SQL 程序,显示出所有职工的工资总和。SELECT SUM(SAL)FROM SCOTT.EMP;4编写一段 PL/SQL 程序,显示出部门号码等于10 的部门中工资收入最少的职工的姓名。SELECT ENAME FROM SCOTT.EMP WHERE DEPTNO=10 AND SAL=(SELECT MIN(SAL)FROM SCOTT.EMP WHERE DEPTNO=10);5编写一段 PL/SQL 程序,显示出在 80年 1 月 1 日至 81 年 12 月 1 日之间参加名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 5 页 -工作的职工的数量。SELECT count(empno)FROM SCOTT.EMP WHERE HIREDATE BETWEEN to_date(1/1/1980,dd/mm/yyyy)AND to_date(1/11/1981,dd/mm/yyyy)6编写一段 PL/SQL 程序,接收一个职工的姓名,然后显示出包括他的部门信息名称的信息。select*from scott.dept where deptno=(select deptno from scott.emp where ename=&ename);7编写一段 PL/SQL 程序,接收一个职工的号码,然后显示出他的级别。set serveroutpu on declare sal_emp scott.emp.sal%type;salgrade_emp scott.salgrade.grade%type;begin select sal into sal_emp from scott.emp where empno=&empno;select grade into salgrade_emp from scott.salgrade where sal_emp between scott.salgrade.losal and scott.salgrade.hisal;dbms_output.put_line(salgrade_emp);名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 5 页 -end;8使用异常编写一个PL/SQL 程序来检查职工号为7369 的职工的奖金,如果没有奖金的话则显示出错信息。set serveroutpu on declare comm_emp m%type;no_comm_exception exception;begin select comm into comm_emp from scott.emp where empno=7369;if comm_emp is null then raise no_comm_exception;else dbms_output.put_line(奖金为|comm_emp);end if;exception when no_comm_exception then dbms_output.put_line(没有奖金);end;使用异常编写一个PL/SQL 程序来检查主关键字,如果有错误的话则显示出错信息。set serveroutpu on declare sal_emp scott.emp.sal%type;test number:=0;begin select sal into sal_emp 名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 5 页 -from scott.emp where empno=7369;test:=sal_emp/test;exception when zero_divide then dbms_output.put_line(除数不能为 0);end;10.体会预定义异常、非预定义异常、用户自定义异常的使用。名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 5 页 -