1 create or replace procedure add_employee
2 (eno number,name varchar2,sal number,
3 job varchar2 default 'CLERK',dno number)
4 is
5 --declare
6 e exception
7 pragma exception_init(e,-2291);
8 begin
9 insert into emp (empno,ename,sal,job,deptno)
10 values(eno,name,sal,job,dno);
11 exception
12 when dup_val_on_index then
13 raise_application_error(-20000,'雇员号不能重复');
14 when e then
15 raise_application_error(-20001,'部门号不存在');
16* end;
SQL> /
警告: 创建的过程带有编译错误。
我测试了,就是那个定义的 e 例外有问题,我是照书上抄的 不知道为什么会出现错误,请大家知道下,谢谢! 还有大家一般用什么pl/sql开发工具啊,感觉自带的sql*plus 用的不是很顺手。
------解决方案--------------------
- SQL code
--你可以用show errors看下哪里错了create or replace procedure add_employee (eno number,name varchar2,sal number, job varchar2 default 'CLERK',dno number) is --declare e exception; pragma exception_init(e,-2291); begin insert into emp (empno,ename,sal,job,deptno) values(eno,name,sal,job,dno); exception when dup_val_on_index then raise_application_error(-20000,'雇员号不能重复'); when e then raise_application_error(-20001,'部门号不存在'); end;/