Ver Mensaje Individual
  #3 (permalink)  
Antiguo 25/02/2013, 09:54
Avatar de emmanuelhxc
emmanuelhxc
 
Fecha de Ingreso: octubre-2011
Ubicación: México
Mensajes: 12
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: llamar un stored dentro de un cursor

de antemano gracias por tu interés, y si tienes razón yo también creo que no es muy complicado pero no encuentro la forma de hacerlo

aqui esta una parte del stored al que mando a llamar y tambien te pongo el segundo stored con el cual quiero que se llene el cursor

este es el stored que yo ejecuto donde quiero mandar a llamar otros stored

Código SQL:
Ver original
  1. CREATE OR REPLACE PROCEDURE SIER.spconsuptimes (
  2.    p_tipobusqueda    IN       INT DEFAULT 0,
  3.    p_fianio          IN       sier.tauptime.fianio%TYPE DEFAULT 0,
  4.    p_fimes           IN       sier.tauptime.fimes%TYPE DEFAULT 0,
  5.    p_fisemana        IN       sier.tauptime.fisemana%TYPE DEFAULT 0,
  6.    p_fidia           IN       sier.tauptime.fidia%TYPE DEFAULT 0,
  7.    p_fiidsucursal    IN       sier.tauptime.fiidsucursal%TYPE DEFAULT 0,
  8.    p_fiidplaza       IN       sier.cajwdivreg.fiidentificador%TYPE DEFAULT 0,
  9.    p_fiidjefeplaza   IN       sier.cajwdivreg.fiidentificador%TYPE DEFAULT 0,
  10.    p_fcws            IN       sier.tauptime.fcws%TYPE DEFAULT NULL,
  11.    p_fidistrito      IN       sier.tauptime.fiautorizado%TYPE DEFAULT 0,
  12.    p_fipais          IN       sier.cajwsucxregxdiv.fipais%TYPE DEFAULT 0,
  13.    p_fistatus        IN       sier.cajwsucxregxdiv.fistatus%TYPE DEFAULT 0,
  14.    p_finumsemanas    IN       INTEGER DEFAULT 7,
  15.    p_fiantiguedad    IN       INTEGER DEFAULT 26,
  16.    p_respuesta       OUT      TYPES.cursor_type,
  17.    p_cur24           OUT      TYPES.cursor_type
  18. )
  19. AS
  20.    tmp_errorsp      EXCEPTION;
  21.    tmp_errmsg       VARCHAR2 (200);
  22.    tmp_pais         INTEGER;
  23.    tmp_mesanioant   INTEGER;
  24.    tmp_anioantig    INTEGER;
  25.    tmp_mesantig     INTEGER;
  26.    tmp_difnumsem    INTEGER;
  27.    tmp_difantig     INTEGER;
  28. BEGIN
  29.    CASE p_tipobusqueda
  30.      
  31.       WHEN 24
  32.       THEN
  33.          IF p_fianio <> 0 AND p_fisemana <> 0
  34.          THEN
  35.             OPEN p_respuesta FOR
  36.  
  37. sier.spconsuptimenoparam(p_tipobusqueda=>24,p_fianio=>2012,p_fisemana=>52,p_fistatus=>1,p_respuesta=>:cur);
  38.  
  39.          ELSE
  40.             tmp_errmsg :=
  41.                   'ERROR EN sier.spconsuptime, OPCION 2 P_FIANIO = '
  42.                || p_fianio
  43.                || ', P_FIMES '
  44.                || p_fimes
  45.                || ', P_FISEMANA '
  46.                || p_fisemana;
  47.             RAISE tmp_errorsp;
  48.          END IF;
  49.      
  50.       ELSE
  51.          tmp_errmsg := 'OPERACION INVALIDA';
  52.          RAISE tmp_errorsp;
  53.    END CASE;
  54. EXCEPTION
  55.    WHEN tmp_errorsp
  56.    THEN
  57.       raise_application_error (-20102, tmp_errmsg || SQLERRM);
  58.    WHEN OTHERS
  59.    THEN
  60.       raise_application_error (-20102, 'ERROR:' || SQLERRM);
  61. END spconsuptimes;
  62. /
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ este es el stored "secundario"

Código SQL:
Ver original
  1. CREATE OR REPLACE PROCEDURE SIER.spconsuptimenoparam (
  2.    p_tipobusqueda    IN       INT DEFAULT 0,
  3.    p_fianio          IN       sier.tauptime.fianio%TYPE DEFAULT 0,
  4.    p_fimes           IN       sier.tauptime.fimes%TYPE DEFAULT 0,
  5.    p_fisemana        IN       sier.tauptime.fisemana%TYPE DEFAULT 0,
  6.    p_fidia           IN       sier.tauptime.fidia%TYPE DEFAULT 0,  
  7.    p_fcws            IN       sier.tauptime.fcws%TYPE DEFAULT NULL,  
  8.    p_fipais          IN       sier.cajwsucxregxdiv.fipais%TYPE DEFAULT 0,
  9.    p_fistatus        IN       sier.cajwsucxregxdiv.fistatus%TYPE DEFAULT 0,
  10.    p_finumsemanas    IN       INTEGER DEFAULT 7,
  11.    p_fiantiguedad    IN       INTEGER DEFAULT 26,
  12.    p_respuesta       OUT      TYPES.cursor_type
  13. )
  14. AS
  15.    tmp_errorsp      EXCEPTION;
  16.    tmp_errmsg       VARCHAR2 (200);
  17.    tmp_pais         INTEGER;
  18.    tmp_mesanioant   INTEGER;
  19.    tmp_anioantig    INTEGER;
  20.    tmp_mesantig     INTEGER;
  21.    tmp_difnumsem    INTEGER;
  22.    tmp_difantig     INTEGER;
  23. BEGIN
  24.    CASE p_tipobusqueda
  25.       WHEN 24
  26.       THEN
  27.          IF p_fianio <> 0 AND p_fisemana <> 0
  28.          THEN
  29.             OPEN p_respuesta FOR
  30.                SELECT TRUNC ((SUM (fiuptime) / COUNT (fiuptime)),
  31.                              2
  32.                             ) porcentaje
  33.                  FROM sier.tauptime
  34.                 WHERE fianio = p_fianio
  35.                   AND fisemana = p_fisemana
  36.                   AND fiautorizado = p_fistatus;
  37.          ELSE
  38.             tmp_errmsg :=
  39.                   'ERROR EN sier.spconsuptime, OPCION 2 P_FIANIO = '
  40.                || p_fianio
  41.                || ', P_FIMES '
  42.                || p_fimes
  43.                || ', P_FISEMANA '
  44.                || p_fisemana;
  45.             RAISE tmp_errorsp;
  46.          END IF;
  47. ELSE
  48.          tmp_errmsg := 'OPERACION INVALIDA';
  49.          RAISE tmp_errorsp;
  50.    END CASE;
  51. EXCEPTION
  52.    WHEN tmp_errorsp
  53.    THEN
  54.       raise_application_error (-20102, tmp_errmsg || SQLERRM);
  55.    WHEN OTHERS
  56.    THEN
  57.       raise_application_error (-20102, 'ERROR:' || SQLERRM);
  58. END spconsuptimenoparam;

Última edición por emmanuelhxc; 25/02/2013 a las 10:44