+ -
当前位置:首页 → 问答吧 → pl/sql中如何全部依次执行if elsif分支?求高人指教

pl/sql中如何全部依次执行if elsif分支?求高人指教

时间:2011-11-09

来源:互联网

代码如下:
[code=SQL][/code]CREATE OR REPLACE PROCEDURE RAISE_EXCEPTIONPRO
( P_NUMBER IN NUMBER)
IS
RESULT NUMBER :=0;

FUNCTION RAISE_EXCEPTION (P_STATUS IN NUMBER) 
RETURN INTEGER
IS
A1 EXCEPTION;
A2 EXCEPTION;
A3 EXCEPTION;
BEGIN
IF(P_STATUS = 1) THEN
RAISE A1;
ELSIF(P_STATUS = 2) THEN
RAISE A2;
ELSIF(P_STATUS = 3) THEN
RAISE A3;
END IF;
RETURN 0;
EXCEPTION
WHEN A1 THEN
RETURN 1;
WHEN A2 THEN
RETURN 2;
WHEN A3 THEN
RETURN 3;
WHEN OTHERS THEN
ROLLBACK;
END RAISE_EXCEPTION;
BEGIN
RESULT :=RAISE_EXCEPTION(P_NUMBER);
DBMS_OUTPUT.PUT_LINE(RESULT);
END;
/
在第一个IF(P_STATUS = 1)完成后还要返回到ELSIF(P_STATUS = 2),依次执行完,怎么才能做到啊?

作者: silentzhang23   发布时间: 2011-11-09

作者: rfb0204421   发布时间: 2011-11-09

引用楼主 silentzhang23 的回复:
在第一个IF(P_STATUS = 1)完成后还要返回到ELSIF(P_STATUS = 2),依次执行完,怎么才能做到啊?

咦?好奇怪。。
既然P_STATUS已经为1了,为什么还要判断P_STATUS 是否为2呢?

作者: yixilan   发布时间: 2011-11-09

不用else 就好了 。。。。。 else 是互斥的啊

作者: a120255857   发布时间: 2011-11-09

下一个估计是TOM

作者: rfb0204421   发布时间: 2011-11-09

引用 2 楼 yixilan 的回复:
引用楼主 silentzhang23 的回复:
在第一个IF(P_STATUS = 1)完成后还要返回到ELSIF(P_STATUS = 2),依次执行完,怎么才能做到啊?
咦?好奇怪。。
既然P_STATUS已经为1了,为什么还要判断P_STATUS 是否为2呢?

P_STATUS 是由P_NUMBER传过来的,就是已经存在的数据,数值有1,2,3,…

作者: silentzhang23   发布时间: 2011-11-09

回复3楼,那如果不用else,怎么判断P_STATUS为2,3,值呢?

作者: silentzhang23   发布时间: 2011-11-09