SQL异常似乎不起作用

时间:2017-08-20 06:50:42

标签: oracle stored-procedures plsql

任何人都知道为什么我的例外不起作用?当我测试sql时,出现的唯一例外是其他人。

这是我的第一个存储过程,我希望它使用参数值插入新学生。

 create or replace PROCEDURE ADD_STUDENT_TO_DB (pSTUid number, pSTUname varchar2) AS
    Out_Of_Range Exception;
    BEGIN 
    IF pSTUid <=1 AND pSTUid >=499 THEN
    RAISE Out_Of_Range;
END IF;
INSERT INTO STUDENT (STUid, STUname)
VALUES (pSTUid, pSTUname);

EXCEPTION
WHEN DUP_VAL_ON_iNDEX THEN
dbms_output.put_line('-20010.   Duplicate student ID');

WHEN Out_Of_Range THEN
dbms_output.put_line('-20002.   student ID  out of  range');

WHEN OTHERS THEN 
dbms_output.put_line('-20000. Error');
END;

这是我的第二个存储过程,我希望这可以调用我的第一个存储过程。

create or replace PROCEDURE ADD_STUDENT_VIASQLDEV (pSTUid number, pSTUname varchar2) AS
BEGIN

INSERT INTO STUDENT (STUid, STUname)
VALUES (pSTUid, pSTUname);

dbms_output.put_line('--------------------------------------------');
dbms_output.put_line('Adding student ID: ' || pSTUid || ' Name: ' || pSTUname);

EXCEPTION

WHEN OTHERS THEN 
dbms_output.put_line('-20000. Error');
END;

1 个答案:

答案 0 :(得分:0)

应该存在IF pSTUid <=1 OR pSTUid >=499 THEN而不是您对out_of_range的声明