Estou tentando chamar uma função usando DBMS_SQL
mas quando esta função retorna um boolean eu não consigo
chama-la.
Quando chamo um função que retorna um number funciona OK,
mas se ela retornar boolean ou varchar2 tenho problemas.
Segue meus códigos:
FUNCTION TESTEA(P1 IN VARCHAR2) RETURN BOOLEAN is
BEGIN
INSERT INTO TESTE VALUES(‘A’, 1);
RETURN TRUE;
EXCEPTION
WHEN OTHERS THEN
RETURN FALSE;
END;
DECLARE
V_EXEC VARCHAR2(100);
V_CURSOR_ID INTEGER;
V_RETORNO INTEGER;
V_RET BOOLEAN;
BEGIN
V_EXEC := ‘BEGIN :RETORNO := ‘ || ‘PKG_TESTE.TESTEA ( :B1 ); END;’;
—
V_CURSOR_ID := DBMS_SQL.OPEN_CURSOR;
DBMS_SQL.PARSE(V_CURSOR_ID, V_EXEC, DBMS_SQL.NATIVE);
—
DBMS_SQL.bind_variable(V_CURSOR_ID, ‘:B1’ , ”);
DBMS_SQL.bind_variable(V_CURSOR_ID, ‘:RETORNO’, V_RET);
—
V_RETORNO := DBMS_SQL.EXECUTE(V_CURSOR_ID);
DBMS_SQL.CLOSE_CURSOR(V_CURSOR_ID);
—
EXCEPTION
WHEN OTHERS THEN
DBMS_SQL.CLOSE_CURSOR(V_CURSOR_ID);
DBMS_OUTPUT.PUT_LINE(SQLERRM);
END;