Tipos de datos fuera de procedimiento

ele
05 de Enero del 2005
He definido un paquete como sigue:

create or replace PACKAGE pk_TuxConsLlamOP
AS



TYPE Det_Llam_Tbl_OP_TelB IS TABLE OF VARCHAR2(30)
INDEX BY BINARY_INTEGER;



TYPE Det_Llam_Tbl_Fecha_OP_Llam IS TABLE OF VARCHAR2(10)
INDEX BY BINARY_INTEGER;



TYPE Det_Llam_Tbl_Hora_OP_Llam IS TABLE OF VARCHAR2(6)
INDEX BY BINARY_INTEGER;



TYPE Det_Llam_Tbl_Dur_OP_llam IS TABLE OF VARCHAR2(10)
INDEX BY BINARY_INTEGER;



TYPE Det_Llam_Tbl_OP_Tipo_uso IS TABLE OF VARCHAR2(5)
INDEX BY BINARY_INTEGER;



TYPE Det_Llam_Tbl_OP_Provider IS TABLE OF VARCHAR2(3)
INDEX BY BINARY_INTEGER;



TYPE Det_Llam_Tbl_OP_Red IS TABLE OF VARCHAR2(1)
INDEX BY BINARY_INTEGER;




-- procedimiento que devuelve el detalle de todas las llamadas realizadas

-- por un determinado telefono entre unas fechas determinadas



PROCEDURE sp_OptimalPricing
-- parametros de entrada y salida
(Telf_A IN VARCHAR2,
Fech_Ini_I IN VARCHAR2,
Fech_Fin_I IN VARCHAR2,
Parametros_Tbl_TelB OUT Det_Llam_Tbl_OP_TelB,
Parametros_Tbl_Fecha_Llam OUT Det_Llam_Tbl_Fecha_OP_Llam,
Parametros_Tbl_Hora_Llam OUT Det_Llam_Tbl_Hora_OP_Llam,
Parametros_Tbl_Dur_llam OUT Det_Llam_Tbl_Dur_OP_llam,
Parametros_Tbl_Tipo_uso OUT Det_Llam_Tbl_OP_Tipo_uso,
Parametros_Tbl_Provider OUT Det_Llam_Tbl_OP_Provider,
Parametros_Tbl_Red OUT Det_Llam_Tbl_OP_Red);




END pk_TuxConsLlamOP;
/



y le probamos tal como sigue:



declare
numeros_b DET_LLAM_TBL_OP_TELB;
fechas DET_LLAM_TBL_FECHA_OP_LLAM;
horas DET_LLAM_TBL_HORA_OP_LLAM;
duraciones DET_LLAM_TBL_DUR_OP_LLAM;
tipos_uso DET_LLAM_TBL_OP_TIPO_USO;
providers_id DET_LLAM_TBL_OP_PROVIDER;
redes DET_LLAM_TBL_OP_RED;
begin
pk_TuxConsLlamOP.sp_OptimalPricing('34600004911','01/09/2004','17/11/2044',numeros_b,fechas,horas,duraciones,tipos_uso,providers_id,redes);
end;
/





Este procedimiento va a ser llamado desde JDBC y tienen un problema al recoger el tipo de dato.

Nos han pedido que saquemos del paquete la definicion de los tipos de datos de salida

create or replace type DET_LLAM_TBL_OP_TELB as table of VARCHAR2(30);

(...)



Lo he hecho, están definidos fuera y los he quitado del paquete....

SQL> desc Det_Llam_Tbl_OP_TelB
Det_Llam_Tbl_OP_TelB TABLE OF VARCHAR2(30)



Todo compila bien, no hay errores y al ejecutarlos me da lo siguiente:

SQL> r
1 declare
2 numeros_b DET_LLAM_TBL_OP_TELB;
3 fechas DET_LLAM_TBL_FECHA_OP_LLAM;
4 horas DET_LLAM_TBL_HORA_OP_LLAM;
5 duraciones DET_LLAM_TBL_DUR_OP_LLAM;
6 tipos_uso DET_LLAM_TBL_OP_TIPO_USO;
7 providers_id DET_LLAM_TBL_OP_PROVIDER;
8 redes DET_LLAM_TBL_OP_RED;
9 begin
10 pk_TuxConsLlamOP.sp_OptimalPricing('34600004911','01/09/2004','17/11/2044',numeros_b,fechas,horas,duraciones,tipos_uso,provider
s_id,redes);
11* end;
declare
*
ERROR at line 1:
ORA-06531: Reference to uninitialized collection
ORA-06512: at "CALLADM.PK_TUXCONSLLAMOP", line 162
ORA-06512: at line 10

Alguien me puede ayudar?

Gracias


jc3000
05 de Enero del 2005
Las colecciones de objetos tienen que ser inicializadas , creo que es algo así :

coleccion_de_objetos := coleccion_de_objetos();

Pruebalo así y me cuentas