繁体   English   中英

具有多个IF的ORACLE PL SQL过程

[英]ORACLE PL SQL PROCEDURE WITH MULTIPLE IF

在PL SQL上声明多个IF是否正确,如以下代码所示。 我刚发现这个错误-

程序包主体有问题...找不到被调用的程序单元

PROCEDURE CONSULTA_EVALCT(VAR_R VARCHAR2,VAR_A VARCHAR2, IO_CURSOR OUT T_CURSOR) 
IS         
V_CURSOR T_CURSOR; 
BEGIN
IF(VAR_R='0' AND VAR_A='0')THEN 
    OPEN V_CURSOR FOR 
    SELECT *from table1; 
    IO_CURSOR := V_CURSOR; 
END IF; 
IF(VAR_R='0' AND VAR_A<>0) THEN 
    OPEN V_CURSOR FOR
    SELECT *FROM table2; 
    IO_CURSOR := V_CURSOR; 
END IF; 
IF(VAR_R<>'0' AND VAR_A<>0) THEN
    OPEN V_CURSOR FOR
    SELECT *FROM table3; 
    IO_CURSOR := V_CURSOR; 
END IF; 
END CONSULTA_EVALCT;

首先,您是否将过程添加到Package头?并且正确满足条件“如果仅想使用IF”的方法如下:

IF(VAR_R='0') THEN
   IF (A= '0')
      OPEN V_CURSOR FOR SELECT *from table1; 
      --..
     ELSE 
       OPEN V_CURSOR FOR SELECT *FROM table2; 
       --..
   END IF;
ELSE IF (VAR_A<>0) THEN
       OPEN V_CURSOR FOR SELECT *FROM table3; 
       --..
END IF;
--..

我建议在这种情况下使用CASE而不是多个

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM