在PL / SQL过程调用中使用DECODE

时间:2018-09-08 09:52:30

标签: oracle plsql

我有一个存储的PL / SQL过程(例如X),该过程将记录插入表中。我正在从另一个过程(例如Y)中调用该过程。我在过程Y中有一些参数,例如para1,para2,para3,它们可以具有两个值(零或一),对于零和一个值,我在TBL_SETUP中存储了一个id,当我调用过程XI时,要检查para1是否为null,然后返回null,如果不为null,则检查它是否为1,然后返回YES_ID,如果不是,则返回NO_ID。

我已经尝试过类似的事情。我在调用过程之前写了一条SELECT语句来获取YES_ID,NO_ID,它工作正常,但是当我按如下所示编写过程调用时,它给了我错误消息“ PLS-00204:在SQL内可能使用函数或伪列仅声明”。如何在过程调用中使用DECODE

PROC_X(DECODE(para1,NULL,NULL,DECODE(para1,'1',YES_ID,NO_ID)),para2,NULL,NULL,DECODE(para2,'1',YES_ID,NO_ID)),para3,NULL,NULL,DECODE(para3,'1',YES_ID,NO_ID)),)

1 个答案:

答案 0 :(得分:1)

您可以使用SELECT INTO

DECLARE 
   DECODE_RESULT VARCHAR2(100); -- or any suitable data type
BEGIN
   SELECT DECODE(...) INTO DECODE_RESULT FROM dual;

   PROC_X(DECODE_RESULT);

END;