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

问题描述 投票:1回答:1

我有一个存储的PL / SQL过程(比如X),它将记录插入表中。我从另一个程序(比如Y)调用该程序。我在程序Y中有一些参数,如para1,para2,para3,它可以有两个值0或1,对于零和一个值,我有一个id存储在TBL_SETUP中,当我调用过程XI时,想检查是否para1是null然后返回null,如果它不为null,则检查它是否为1然后返回YES_ID,如果为no则返回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)),)
oracle plsql
1个回答
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;
© www.soinside.com 2019 - 2024. All rights reserved.