Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

Probar un procedimiento

Estas en el tema de Probar un procedimiento en el foro de Oracle en Foros del Web. 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, ...
  #1 (permalink)  
Antiguo 06/09/2011, 07:54
Avatar de h2swider  
Fecha de Ingreso: julio-2007
Ubicación: Ciudad de Buenos Aires
Mensajes: 932
Antigüedad: 11 años, 10 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

Etiquetas: probar, procedimiento, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:30.