将参数传递给函数时在oracle中返回null?

这是我的功能

---Write procedure for retrive data----
CREATE OR REPLACE FUNCTION retrieve_decrypt(
    custid  in NUMBER
)
RETURN sys_refcursor
IS
    decrypt_value sys_refcursor;
BEGIN
     open decrypt_value for Select custname,contactno, enc_dec.decrypt(creditcardno,password) as  
       creditcardno ,enc_dec.decrypt(income,password) as 
            income  from employees where custid=custid ;
    RETURN decrypt_value;
END;
/

我这样称呼它:SELECT retrieve_decrypt(5) FROM DUAL;然后它只返回 {}。

在此处输入图片说明

但我是,硬编码custid=5insted的的custid=custid。它会返回结果正确。需要一些专家帮助来解决这个问题。

在此处输入图片说明

小脚怪

不要将参数命名为列;如果列名称为custid,则让参数为par_custid否则,它会导致问题(如您所见)。

在你的例子中:

CREATE OR REPLACE FUNCTION retrieve_decrypt (par_custid IN NUMBER)
   RETURN SYS_REFCURSOR
IS
   decrypt_value  SYS_REFCURSOR;
BEGIN
   OPEN decrypt_value FOR
      SELECT custname,
             contactno,
             enc_dec.decrypt (creditcardno, password) AS creditcardno,
             enc_dec.decrypt (income, password) AS income
        FROM employees
       WHERE custid = par_custid;

   RETURN decrypt_value;
END;
/

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章