-1
我正嘗試使用動態SQL查詢執行存儲過程。我終於得到它編譯,但它返回以下錯誤:在Oracle中使用帶有動態SQL的REF CURSOR時缺少表達式
ORA-00936 - Missing expression
我哪裏出錯了?
包裝規格:
TYPE T_CURSOR IS REF CURSOR;
PROCEDURE RADNIK
(
P_ID_OC_NAJVISA IN RADNIK.ID_NAJVISA_OC%TYPE, --1
P_IME_PREZIME IN RADNIK.IME%TYPE, --2
REF_TABELA IN VARCHAR2, --3
P_ID_OPERATER IN Z_TRANSAKCIJA.ID_OPERATER%TYPE,
P_CURSOR OUT T_CURSOR
);
包體:
PROCEDURE RADNIK
(
P_ID_OC_NAJVISA IN RADNIK.ID_NAJVISA_OC%TYPE,
P_IME_PREZIME IN RADNIK.IME%TYPE,
REF_TABELA IN VARCHAR2,
P_ID_OPERATER IN Z_TRANSAKCIJA.ID_OPERATER%TYPE,
P_CURSOR OUT T_CURSOR
)
IS
radnikRed RADNIK%ROWTYPE;
BEGIN
OPEN P_CURSOR FOR
'SELECT *
FROM (SELECT DISTINCT
R.ID_RADNIK,
R.PREZIME || '' ('' || R.IME_RODITELJA || '') '' || R.IME || '', '' || R.LICNI_BROJ
IME_PREZIME
FROM RADNIK R,
(
SELECT DISTINCT RT.ID_RADNIK FROM '||REF_TABELA||' RT WHERE RT.ID_OC_NAJVISA='||P_ID_OC_NAJVISA||') RT
WHERE
(R.ID_NAJVISA_OC = '||P_ID_OC_NAJVISA||' and R.STORNO=''N'') OR R.ID_RADNIK=RT.ID_RADNIK)
WHERE IME_PREZIME LIKE ''%'' || '||P_IME_PREZIME||' || ''%''
OR '||P_IME_PREZIME||' IS NULL';
LOOP
FETCH P_CURSOR INTO radnikRed;
END LOOP;
CLOSE P_CURSOR;
END RADNIK;
這將是一個數字,從應用程序傳遞的值是整數。我不確定我是否理解第二個問題。如果它們是相同的,那將是真的,否則就是錯誤的。但是R.ID_NAJVISA_OC是NUMBER,如果它幫助任何... – dzenesiz