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 originalCREATE OR REPLACE PROCEDURE SIER.spconsuptimes (
p_tipobusqueda IN INT DEFAULT 0,
p_fianio IN sier.tauptime.fianio%TYPE DEFAULT 0,
p_fimes IN sier.tauptime.fimes%TYPE DEFAULT 0,
p_fisemana IN sier.tauptime.fisemana%TYPE DEFAULT 0,
p_fidia IN sier.tauptime.fidia%TYPE DEFAULT 0,
p_fiidsucursal IN sier.tauptime.fiidsucursal%TYPE DEFAULT 0,
p_fiidplaza IN sier.cajwdivreg.fiidentificador%TYPE DEFAULT 0,
p_fiidjefeplaza IN sier.cajwdivreg.fiidentificador%TYPE DEFAULT 0,
p_fcws IN sier.tauptime.fcws%TYPE DEFAULT NULL,
p_fidistrito IN sier.tauptime.fiautorizado%TYPE DEFAULT 0,
p_fipais IN sier.cajwsucxregxdiv.fipais%TYPE DEFAULT 0,
p_fistatus IN sier.cajwsucxregxdiv.fistatus%TYPE DEFAULT 0,
p_finumsemanas IN INTEGER DEFAULT 7,
p_fiantiguedad IN INTEGER DEFAULT 26,
p_respuesta OUT TYPES.cursor_type,
p_cur24 OUT TYPES.cursor_type
)
AS
tmp_errorsp EXCEPTION;
tmp_errmsg VARCHAR2 (200);
tmp_pais INTEGER;
tmp_mesanioant INTEGER;
tmp_anioantig INTEGER;
tmp_mesantig INTEGER;
tmp_difnumsem INTEGER;
tmp_difantig INTEGER;
BEGIN
CASE p_tipobusqueda
WHEN 24
THEN
IF p_fianio <> 0 AND p_fisemana <> 0
THEN
OPEN p_respuesta FOR
sier.spconsuptimenoparam(p_tipobusqueda=>24,p_fianio=>2012,p_fisemana=>52,p_fistatus=>1,p_respuesta=>:cur);
ELSE
tmp_errmsg :=
'ERROR EN sier.spconsuptime, OPCION 2 P_FIANIO = '
|| p_fianio
|| ', P_FIMES '
|| p_fimes
|| ', P_FISEMANA '
|| p_fisemana;
RAISE tmp_errorsp;
END IF;
ELSE
tmp_errmsg := 'OPERACION INVALIDA';
RAISE tmp_errorsp;
END CASE;
EXCEPTION
WHEN tmp_errorsp
THEN
raise_application_error (-20102, tmp_errmsg || SQLERRM);
WHEN OTHERS
THEN
raise_application_error (-20102, 'ERROR:' || SQLERRM);
END spconsuptimes;
/
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ este es el stored "secundario"
Código SQL:
Ver originalCREATE OR REPLACE PROCEDURE SIER.spconsuptimenoparam (
p_tipobusqueda IN INT DEFAULT 0,
p_fianio IN sier.tauptime.fianio%TYPE DEFAULT 0,
p_fimes IN sier.tauptime.fimes%TYPE DEFAULT 0,
p_fisemana IN sier.tauptime.fisemana%TYPE DEFAULT 0,
p_fidia IN sier.tauptime.fidia%TYPE DEFAULT 0,
p_fcws IN sier.tauptime.fcws%TYPE DEFAULT NULL,
p_fipais IN sier.cajwsucxregxdiv.fipais%TYPE DEFAULT 0,
p_fistatus IN sier.cajwsucxregxdiv.fistatus%TYPE DEFAULT 0,
p_finumsemanas IN INTEGER DEFAULT 7,
p_fiantiguedad IN INTEGER DEFAULT 26,
p_respuesta OUT TYPES.cursor_type
)
AS
tmp_errorsp EXCEPTION;
tmp_errmsg VARCHAR2 (200);
tmp_pais INTEGER;
tmp_mesanioant INTEGER;
tmp_anioantig INTEGER;
tmp_mesantig INTEGER;
tmp_difnumsem INTEGER;
tmp_difantig INTEGER;
BEGIN
CASE p_tipobusqueda
WHEN 24
THEN
IF p_fianio <> 0 AND p_fisemana <> 0
THEN
OPEN p_respuesta FOR
SELECT TRUNC ((SUM (fiuptime) / COUNT (fiuptime)),
2
) porcentaje
FROM sier.tauptime
WHERE fianio = p_fianio
AND fisemana = p_fisemana
AND fiautorizado = p_fistatus;
ELSE
tmp_errmsg :=
'ERROR EN sier.spconsuptime, OPCION 2 P_FIANIO = '
|| p_fianio
|| ', P_FIMES '
|| p_fimes
|| ', P_FISEMANA '
|| p_fisemana;
RAISE tmp_errorsp;
END IF;
ELSE
tmp_errmsg := 'OPERACION INVALIDA';
RAISE tmp_errorsp;
END CASE;
EXCEPTION
WHEN tmp_errorsp
THEN
raise_application_error (-20102, tmp_errmsg || SQLERRM);
WHEN OTHERS
THEN
raise_application_error (-20102, 'ERROR:' || SQLERRM);
END spconsuptimenoparam;