Tipos de datos fuera de procedimiento
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
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
