当我编译下面的代码时,我得到PL-00324错误。此错误表示变量V_CD_ESTADO无法从光标C_VERIFICA接收返回,因为它不是游标。很奇怪,不是吗?我研究了很多,但找不到能帮助我的东西......所以,如果有人帮助我,我将非常感激!
PLS-00324游标属性可能不适用于非游标“字符串”
CREATE OR REPLACE PACKAGE BODY PCK_TB_ESTADO
IS
FUNCTION FNC_VALIDA_ESTADO
(P_CD_ESTADO IN TB_FUNCIONARIO.CD_ESTADO%TYPE)
RETURN BOOLEAN
IS
CURSOR C_VERIFICA
IS
SELECT CD_ESTADO
FROM TB_FUNCIONARIO
WHERE CD_ESTADO = P_CD_ESTADO;
V_CD_ESTADO TB_FUNCIONARIO.CD_ESTADO%TYPE;
BEGIN
OPEN C_VERIFICA;
FETCH C_VERIFICA INTO V_CD_ESTADO;
IF V_CD_ESTADO%NOTFOUND THEN
RETURN TRUE;
ELSE
RETURN FALSE;
END IF;
CLOSE C_VERIFICA;
END;
END;
答案 0 :(得分:2)
您想要检查未找到C_VERIFICA%NOTFOUND
的光标状态而不是变量V_CD_ESTADO
答案 1 :(得分:0)
光标属性%FOUND
,%NOTFOUND
,%ROWS%
,%IS_OPEN
等仅适用于CURSOR
。即游标定义为CURSOR cursor_1 IS ...
。
在这种情况下,游标cursor_1
可以具有这些游标属性。例如cursor_1%IS_OPEN
,cursor_1%NOTFOUND
等。在您的代码中,您显然将游标属性与非游标元素关联,即V_CD_ESTADO
,这只是TB_FUNCIONARIO.CD_ESTADO
的{{1}}的变量。
你打算做的是
TYPE
因为IF C_VERIFICA%NOTFOUND THEN
RETURN TRUE;
ELSE
RETURN FALSE;
END IF;
是这里的光标。