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; /