我該怎麼辦,如果我的選擇不帶結果使用SYS_REFCURSOR
?如何處理無數據發現使用SYS_REFCURSOR - ORACLE
我已經嘗試到目前爲止使用NO_DATA_FOUND
,但其沒有工作,我的STATUS
回頭率我爲= 1
代碼:
...
MYVARIABLE IN OUT SYS_REFCURSOR
...
OPEN MYVARIABLE FOR
SELECT NAME FROM TABLE WHERE COD = 1;
STATUS := 1;
EXCEPTION
WHEN NO_DATA_FOUND THEN
STATUS := 0;
任何ideias?
謝謝!
真正的SQL是這樣的:
編輯
V_SQL := 'SELECT SUM(T1.VLRLIQ) VALOR,T1.CODCLI,T1.NOMCLI
,(SELECT METCLI FROM WEB_CRM_CLIVEN T2
WHERE T2.CODCLI = T1.CODCLI AND T2.CODVEN = '|| P_CODVEN ||'
AND T2.MES = '|| V_MES ||' AND T2.ANO = '|| V_ANO ||') META
FROM SAPIENS.USU_VRESNFV T1,SAPIENS.E085CLI T2
WHERE T1.CODVEN = '|| P_CODVEN ||'
AND TO_CHAR(T1.DATEMI,''YYYY'') = '|| V_ANO ||'
AND TO_CHAR(T1.DATEMI,''MM'') = '|| V_MES ||'
AND T1.VENFAT = ''S''
'|| V_CGCCPF ||'
'|| V_NOMCLI ||'
AND T2.CODCLI = T1.CODCLI
AND T1.CODEMP = 1
GROUP BY T1.CODCLI,T1.NOMCLI
UNION
SELECT SUM(''0'') VALOR,CODCLI,NOMCLI,(SELECT METCLI FROM WEB_CRM_CLIVEN T3
WHERE T3.CODCLI = T2.CODCLI AND T3.CODVEN = '|| P_CODVEN ||'
AND T3.MES = '|| V_MES ||' AND T3.ANO = '|| V_ANO ||') META
FROM SAPIENS.E085CLI T2
WHERE
CODCLI IN (SELECT CODCLI FROM WEB_CRM_VEN_CARTEIRA
WHERE CODVEN = '|| P_CODVEN ||' AND MES = '|| V_MES ||' AND ANO = '|| V_ANO ||')
'|| V_CGCCPF ||'
'|| V_NOMCLI ||'
GROUP BY CODCLI,NOMCLI
ORDER BY VALOR DESC';
STATUS := 1;
OPEN RESULTADO FOR V_SQL;
通常當你使用遊標時,你做的事情很糟糕。你想做什麼?此外,你可以做'如果存在(從表中選擇名稱cod = 1)'來測試是否存在任何行。 – Eric 2012-01-11 18:56:15
@Eric:代碼只是一個例子,將編輯並顯示給你所有 – 2012-01-11 19:04:43
@Eric:檢查更新,這是一個存儲過程,它可以與web服務器php – 2012-01-11 19:06:49