при передаче параметра в функцию Return null в oracle? - PullRequest
0 голосов
/ 15 февраля 2019

Это моя функция

---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; Затем он возвращает только {}.

enter image description here

но я твердый код custid=5 вместо custid=custid .Это вернет результат правильно.Нужна помощь специалиста для решения этой проблемы.

enter image description here

1 Ответ

0 голосов
/ 15 февраля 2019

Не называйте параметры как столбцы;если имя столбца 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;
/
...