Oracle学习(十一):PL/SQL(四)

2014-11-24 09:09:07 · 作者: · 浏览: 4
mpno=pempno; --其他涨400 16 end if; 17 end loop; 18 close cemp; 19 20 --提交: 隔离级别 21 commit; 22 23 dbms_output.put_line('完成'); 24 end; 25 / 完成 PL/SQL procedure successfully completed SQL> --查询执行PLSQL语句后的薪水 SQL> select * from emp; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ----- ---------- --------- ----- ----------- --------- --------- ------ 7369 SMITH CLERK 7902 1980/12/17 1200.00 20 7499 ALLEN SALESMAN 7698 1981/2/20 2000.00 300.00 30 7521 WARD SALESMAN 7698 1981/2/22 1650.00 500.00 30 7566 JONES MANAGER 7839 1981/4/2 3775.00 20 7654 MARTIN SALESMAN 7698 1981/9/28 1650.00 1400.00 30 7698 BLAKE MANAGER 7839 1981/5/1 3650.00 30 7782 CLARK MANAGER 7839 1981/6/9 3250.00 10 7788 SCOTT ANALYST 7566 1987/4/19 3400.00 20 7839 KING PRESIDENT 1981/11/17 6000.00 10 7844 TURNER SALESMAN 7698 1981/9/8 1900.00 0.00 30 7876 ADAMS CLERK 7788 1987/5/23 1500.00 20 7900 JAMES CLERK 7698 1981/12/3 1350.00 30 7902 FORD ANALYST 7566 1981/12/3 3400.00 20 7934 MILLER CLERK 7782 1982/1/23 1700.00 10 14 rows selected SQL> --对比涨之前,可以看出涨工资成功 SQL> SQL> --带参数的光标:查询某个部门的员工姓名 SQL> set serveroutput on SQL> declare 2 --定义一个带参数的光标 3 cursor cemp(pdno number) is select ename from emp where deptno=pdno; 4 pename emp.ename%type; 5 begin 6 open cemp(20); --打开光标,并传递参数 7 loop 8 fetch cemp into pename; 9 exit when cemp%notfound; 10 11 dbms_output.put_line(pename); 12 13 14 end loop; 15 close cemp; 16 end; 17 / SMITH JONES SCOTT ADAMS FORD PL/SQL procedure successfully completed SQL>
SQL> --举例 Zero_Divide ( 被零除) SQL> set serveroutput on SQL> declare 2 pnum number; 3 begin 4 5 pnum := 1/0; 6 7 exception 8 when Zero_Divide then dbms_output.put_line('1: 0不能做被除数'); 9 dbms_output.put_line('2: 0不能做被除数'); 10 when Value_error then dbms_output.put_line('算术错'); 11 when others then dbms_output.put_line('其他例外'); 12 end; 13 / 1: 0不能做被除数 2: 0不能做被除数 PL/SQL procedure successfully completed SQL> SQL> --自定义例外: 查询50号部门的员工姓名 SQL> set serveroutput on SQL> declare 2 cursor cemp is select ename from emp where deptno=50; 3 pename emp.ename%type; 4 5 --自定义例外 6 no_emp_found exception; 7 begin 8 open cemp; 9 --取一个员工 10 fetch cemp into pename; 11 if cemp%notfound then 12 raise no_emp_found; 13 end if; 14 15 close cemp; 16 17 exception 18 when no_emp_found then dbms_output.put_line('没有找到员工'); 19 when others then dbms_output.put_line('其他例外'); 20 21 end; 22 / 没有找到员工 PL/SQL procedure successfully completed SQL> spool off Stopped spooling to c:\PLSQL.txt