Ver Mensaje Individual
  #1 (permalink)  
Antiguo 06/09/2011, 07:54
Avatar de h2swider
h2swider
 
Fecha de Ingreso: julio-2007
Ubicación: Ciudad de Buenos Aires
Mensajes: 932
Antigüedad: 16 años, 8 meses
Puntos: 194
Probar un procedimiento

Hola a todos,
Les cuento, tengo algunos procedimientos que son llamados desde php y devuelven su resultado en un puntero. Hasta aquí todo funciona perfecto, los resultados son los esperados. El problema es que no se como probar el procedimiento oracle sin llamarlo desde mi aplicación PHP. Me gustaría poder abrir el TOAD modificar el procedimiento y llamarlo desde ahí mismo para ver si funciono o no.
La complicación en si creo que esta en el dato que le envió como puntero, y como array, no se como enviárselos directamente desde el cliente sql.

Alguien tiene una idea como debería hacer para probarlo?

Código:
CREATE OR REPLACE PACKAGE NMP_PAMI_LIQUIDACION.Types AS 
  TYPE cursor_type IS REF CURSOR;
  TYPE arraytype is table of varchar2(30) index by pls_integer;
  TYPE arraynumber IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
END Types;
/

CREATE OR REPLACE PROCEDURE detallesProcesosPrestador(
p_usuario IN  varchar2,
p_periodos IN  Types.arraynumber,
p_incentivo IN  Types.arraytype,
p_recordset OUT Types.cursor_type) AS 

BEGIN 
FOR i IN 1 .. p_periodos.COUNT LOOP
    insert into tmp_numeros values ( p_periodos(i) );
END LOOP;

FOR j IN 1 .. p_incentivo.COUNT LOOP
    insert into tmp_usuarios values ( p_incentivo(j) );
END LOOP;
COMMIT;

OPEN p_recordset FOR
	select a.c_proceso,a.f_inicio,a.f_fin,a.m_estado,a.c_anio,a.c_mes,a.c_tipo_calculo,c.c_file_upload,b.c_usuario,b.c_prestador,b.c_red,b.d_prestador,b.d_red,b.n_sap,b.c_ugl
	from nmp_pami.nmt_proceso_calculo a
	inner join nmp_pami.nmt_proceso_calculo_apert_usu b
	on a.c_proceso = b.c_proceso
	inner join nmp_pami.nmt_incentivo_file c
	on a.c_proceso = c.c_proceso
	and b.c_usuario = c.c_usuario
	where b.c_usuario in (p_usuario)
	and a.c_anio * 100 + a.c_mes in (select tmp.numero from tmp_numeros tmp)
	and a.c_tipo_calculo in (select tmp.usuario from tmp_usuarios tmp);

DELETE tmp_numeros;
DELETE tmp_usuarios;
COMMIT;

END detallesProcesosPrestador;
/
__________________
Codifica siempre como si la persona que finalmente mantedra tu código sea un psicópata violento que sabe donde vives

Última edición por h2swider; 07/09/2011 a las 07:04