在PL / SQL过程调用中使用DECODE
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在PL / SQL过程调用中使用DECODE相关的知识,希望对你有一定的参考价值。
我有一个存储的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)),)
答案
你可以使用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;
以上是关于在PL / SQL过程调用中使用DECODE的主要内容,如果未能解决你的问题,请参考以下文章
使用带有布尔输入参数的 PL/SQL 在 oracle 中调用 java 存储过程