Ver Mensaje Individual
  #1 (permalink)  
Antiguo 01/09/2011, 12:58
meli_
 
Fecha de Ingreso: septiembre-2011
Ubicación: Capital Federal
Mensajes: 2
Antigüedad: 12 años, 7 meses
Puntos: 0
Cursor en oracle

Hola! Estoy teniendo problemas para hacer un cursor en oracle. Mi idea era crear una variable con la consulta que quiero exportar, y luego abrir el cursor con esa consulta, pero esto me arroja un error cuando lo llamo desde el php. No se si mi problema esta en la variable o en el "open for".
Esto es lo que tengo hecho hasta ahora:


CREATE OR REPLACE PROCEDURE detallesPracticas(
p_tipo IN number,
p_proceso IN number,
p_files IN Types.arraynumber,
p_usuario IN varchar2,
p_periodos IN Types.arraynumber,
p_beneficiario IN varchar2,
p_parentesco IN varchar2,
p_recordset OUT Types.cursor_type) AS

v_sqls varchar2(32000);


BEGIN

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

FOR j IN 1 .. p_periodos.COUNT LOOP
insert into tmp_numeros2 values ( p_periodos(j) );
END LOOP;

COMMIT;


v_sqls := 'SELECT A.C_ANIO, A.C_MES, A.C_USUARIO, A.C_PRESTADOR, A.C_RED, A.C_FILE_UPLOAD, A.N_INSTALACION, A.C_MR_TCALC, A.ACEPTADO, A.MARCA_A_PROCESAR, B.N_PRESTACION, B.N_BENEFICIO, B.C_GRADO_PAREN,
c.f_practica, c.c_practica, C.Q_PRACTICA, c.c_modulo_pami, c.c_diag, c.n_mat_prof_act, c.d_validacion_efectores, C.C_MODALIDAD_PRESTACION, C.N_MOTIVO_CONSULTA, C.N_ORDEN_RECHAZO, C.N_LUGAR_ATENCION, b.f_prestacion
From nmp_pami.nmt_proceso_calculo_archivos a
Inner join nmp_pami.nmt_prestacion_ti b
On a.c_file_upload = b.c_file
Inner join nmp_pami.nmt_practica_prest_ti c
On b.c_file = c.c_file
And b.n_prestacion = c.n_prestacion
Where A.C_USUARIO = p_usuario
AND A.MARCA_A_PROCESAR=1
AND (A.C_ANIO*100 + A.C_MES) in (select tmp.numero from tmp_numeros2 tmp)';

if p_beneficiario = 'no' or p_parentesco = 'no' then

v_sqls := v_sqls || ' order by 1,2,3,6,7';

else

v_sqls := v_sqls || ' and b.n_beneficio = p_beneficiario
and b.c_grado_paren = p_parentesco
order by 1,2,3,6,7';

end if;


open p_recordset for v_sqls ;


COMMIT;
END detallesPracticas;

Muchas gracias!!!