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

Ref CURSOR

Estas en el tema de Ref CURSOR en el foro de Oracle en Foros del Web. Hola, mi problema es es siguiente: tengo un SQL inserto en un PRC que envía el resultado de una consulta por medio de una variable ...
  #1 (permalink)  
Antiguo 18/08/2016, 15:29
 
Fecha de Ingreso: octubre-2004
Ubicación: Santiago de Chile
Mensajes: 504
Antigüedad: 19 años, 6 meses
Puntos: 0
Busqueda Ref CURSOR

Hola, mi problema es es siguiente:

tengo un SQL inserto en un PRC que envía el resultado de una consulta por medio de una variable REF CURSOR. Dicho SP necesito recorrerlo pero no logro hacerlo.
Código SQL:
Ver original
  1. CREATE OR REPLACE PROCEDURE CHI_CON."P_FWDASIA_FAXCONFIR"
  2.                             ( p_Branch    IN NUMBER,
  3.                               p_FechaIni  IN VARCHAR2,
  4.                               p_NumeroOpe IN NUMERIC,
  5.                               p_errcod   OUT NUMBER,
  6.                               p_errmsg   OUT VARCHAR2,
  7.                               C_Retorno  OUT Pkg_Seguridad.cursorgenerico
  8.                              ) IS
  9. /**************************************************************************/
  10. BEGIN
  11.  
  12.     OPEN C_Retorno FOR          
  13.         SELECT pk_structure            numero_mdr,
  14.                pk_structure_murex      numero_murex,
  15.                name_branch             branch,
  16.                to_char(tradedate_1,'dd') dia_contrato,
  17.                CHI_CON.f_buscar_mes (tradedate_1) mes_contrato,
  18.                to_char(tradedate_1,'yyyy') agno_contrato,
  19.                strucsubtype_desc       nombre_estructura,
  20.                name_trader_1           operador,
  21.                pk_structure            nro_mdr_estructura,
  22.                CHI_CON.F_Formatnumber (quantity_1 ,2)||' USD'      cantidad_moneda_referencia,
  23.                decode(struc_tipo_ope,'COMPRA',name_branch,name_entity) Comprador,
  24.                decode(struc_tipo_ope,'VENTA',name_branch,name_entity) Vendedor,
  25.                modalidad_1             modalidad_cumplimiento,
  26.                enddate_1               fecha_vencimiento,
  27.                settledate_1            fecha_pago,
  28.                CHI_CON.F_Formatnumber (strike_1,6)   strike_1,
  29.                CHI_CON.F_Formatnumber (strike_2,6)   strike_2,
  30.                tipo_index_1            subyacente,
  31.                fax_branch              fax_branch,
  32.                fono_branch             fono_branch
  33.         FROM V_STRUCTURE_FWDASIA
  34.         WHERE  FK_BRANCH = decode(p_Branch, 0, FK_BRANCH, p_Branch)
  35.           AND trunc(tradedate_1) = decode(p_NumeroOpe, 0, to_Date(p_FechaIni,'dd/mm/yyyy'), trunc(tradedate_1))
  36.           AND PK_STRUCTURE = decode(p_NumeroOpe, 0, PK_STRUCTURE, p_NumeroOpe);
  37.    P_ERRMSG := 'OK';
  38.    P_ERRCOD := 0;
  39.  Exception WHEN NO_DATA_FOUND THEN
  40.    P_ERRCOD := SQLCODE;
  41.    P_ERRMSG := SQLERRM;
  42.  WHEN OTHERS THEN
  43.    P_ERRCOD := SQLCODE;
  44.    P_ERRMSG := SUBSTR(SQLERRM,200);
  45. END P_FWDASIA_FAXCONFIR;
[/HTML]
__________________
Dios es mas grande que tu problema :-)

Última edición por gnzsoloyo; 18/08/2016 a las 16:19
  #2 (permalink)  
Antiguo 18/08/2016, 16:22
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Ref CURSOR

OK.... Pero alli no hay ninguna parte de código donde lo estés recorriendo. Sólo lo mandas como parámetro de salida, pero no sabemos a qué destino, el que puede ser otro SP, o bien por programación en algún lenguaje.

Si va a otro SP, debes poner ese codigo, y si lo recorres programáticamente, tendrás que consultar en el subforo del lenguaje que usarás.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 19/08/2016, 07:58
 
Fecha de Ingreso: octubre-2004
Ubicación: Santiago de Chile
Mensajes: 504
Antigüedad: 19 años, 6 meses
Puntos: 0
Respuesta: Ref CURSOR

Hola, así lo estoy haciendo:
Código SQL:
Ver original
  1. DECLARE
  2.   P_BRANCH NUMBER;
  3.   P_FECHAINI VARCHAR2(32767);
  4.   P_NUMEROOPE NUMBER;
  5.   P_ERRCOD NUMBER;
  6.   P_ERRMSG VARCHAR2(32767);
  7.   --C_Retorno  Pkg_Seguridad.cursorgenerico;
  8. -------------------------Variables del cursor-----------------------
  9. numero_mdr                  varchar2(100);--number;
  10. numero_murex                varchar2(100);
  11. branch                      varchar2(100);
  12. dia_contrato                varchar2(100);
  13. mes_contrato                VARCHAR2(100);
  14. agno_contrato               VARCHAR2(100);
  15. nombre_estructura           VARCHAR2(30);
  16. operador                    VARCHAR2(50);
  17. nro_mdr_estructura          varchar2(100);--number;
  18. cantidad_moneda_referencia  VARCHAR2(50);
  19. Comprador                   VARCHAR2(50);
  20. Vendedor                    VARCHAR2(50);
  21. modalidad_cumplimiento      varchar2(100);--number;
  22. fecha_vencimiento           varchar2(100);--date;
  23. fecha_pago                  varchar2(100);--date;
  24. strike_1                     VARCHAR2(50);
  25. strike_2                    VARCHAR2(50);
  26. subyacente                  VARCHAR2(100);
  27. fax_branch                  VARCHAR2(100);
  28. fono_branch                 VARCHAR2(100);
  29.  
  30.  
  31. BEGIN
  32.   P_BRANCH := 20010.4;
  33.   P_FECHAINI := NULL;
  34.   P_NUMEROOPE := 16058.24;
  35.   P_ERRCOD := NULL;
  36.   P_ERRMSG := NULL;
  37.   C_RETORNO := NULL;  --Modify the code to initialize this parameter
  38.  
  39.   CHI_CON.P_FWDASIA_FAXCONFIR ( P_BRANCH, P_FECHAINI, P_NUMEROOPE, P_ERRCOD, P_ERRMSG, C_RETORNO );
  40.  
  41.   --OPEN <subst>;
  42.   OPEN C_RETORNO;
  43.   LOOP
  44.      FETCH C_RETORNO INTO  numero_mdr,numero_murex,branch,dia_contrato,mes_contrato,agno_contrato,nombre_estructura,operador,nro_mdr_estructura,
  45.                            cantidad_moneda_referencia,Comprador,Vendedor,modalidad_cumplimiento,
  46.                            fecha_vencimiento,fecha_pago,strike_1,strike_2,subyacente,fax_branch,fono_branch;
  47.      EXIT WHEN C_RETORNO%NOTFOUND;
  48.     DBMS_OUTPUT.PUT_LINE('I got here:' || numero_mdr);    
  49.   END LOOP;
  50.   close C_RETORNO;
  51.   COMMIT;
  52. END;

[/HTML]


Saludos y gracias por tu ayuda
__________________
Dios es mas grande que tu problema :-)

Última edición por gnzsoloyo; 19/08/2016 a las 12:07
  #4 (permalink)  
Antiguo 19/08/2016, 09:46
 
Fecha de Ingreso: octubre-2004
Ubicación: Santiago de Chile
Mensajes: 504
Antigüedad: 19 años, 6 meses
Puntos: 0
Respuesta: Ref CURSOR

Al final el tema es que no hay que volver a ahecr un open cursor ya que el procedimiento lo deja abierto, el resto es tal cual, incluso el close cursor.
__________________
Dios es mas grande que tu problema :-)

Etiquetas: cursor, estructura, ref
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 20:54.