Hola!
Estoy intentando pasar un tipo tabla como parametro IN OUT, al compilarlo no hay ningun problema pero al ejecutar el procedimiento me marca k el identificador tab_cuentas se debe declarar, no comprendo el error pues segun yo todo esta declarado, agradeceria su ayuda pues soy nueva en PL/SQL, el codigo es el siguiente:
La especificacion del paquete es:
CREATE
OR REPLACE PACKAGE CONTA.P_REGVARIOS
IS
TYPE REC_CUENTAS IS RECORD
(ID_CUENTA NUMBER,
CTA_FORMA1 VARCHAR(80),
NOMBRE VARCHAR(50) );
TYPE TAB_ARBOLCTAS IS TABLE OF REC_CUENTAS INDEX BY BINARY_INTEGER ;
TYPE mycursor IS REF CURSOR;
PROCEDURE SP_OBT_ARBOL( v_cuenta_id IN NUMBER, v_niveles IN NUMBER,v_orden IN VARCHAR,v_incl_pivote IN VARCHAR,tab_cuentas IN OUT TAB_ARBOLCTAS );
END
P_REGVARIOS;
El cuerpo del paquete es:
CREATE
OR REPLACE PACKAGE BODY CONTA.P_REGVARIOS
IS
PROCEDURE
SP_OBT_ARBOL
(v_cuenta_id
IN NUMBER,
v_niveles
IN NUMBER,
v_orden
IN VARCHAR,
v_incl_pivote
IN VARCHAR,
tab_cuentas IN
OUT TAB_ARBOLCTAS )
AS
BEGIN
DECLARE niveles NUMBER;
i NUMBER;
err_num NUMBER;
err_msg VARCHAR2(255);
BEGIN
dbms_output.put_line(
'__________________');
tab_cuentas(1).ID_CUENTA:=1;
tab_cuentas(1).CTA_FORMA1:='0009';
tab_cuentas(1).NOMBRE:='PRUEBA';
dbms_output.put_line(tab_cuentas(1).NOMBRE);
IF(tab_cuentas.FIRST IS NULL) THEN
dbms_output.put_line(
'es nulo');
END IF;
dbms_output.put_line(
'-----------------');
EXCEPTION WHEN OTHERS THEN
DBMS_OUTPUT.put_line(
SQLERRM);
END;
END SP_OBT_ARBOL;
END P_REGVARIOS;