Informix - Cursores Anidados - SP

 
Vista:

Cursores Anidados - SP

Publicado por Erik Eudave (1 intervención) el 05/10/2007 23:22:15
Que tal, estoy intentando hacer un sp con 2 cursores anidados, el primero barre una talba, es decir lee todos sus registros y el segundo actualiza (update) una tabla dependiendo de los valosres que traiga el primer cursos, este sp no funciona:

CREATE PROCEDURE sp_traff_news_01_p(v_fecha date, v_hora INTEGER )

DEFINE v_sgsn VARCHAR(10,0);
DEFINE v_apn VARCHAR(101,0);
DEFINE v_cgi_ci INTEGER;
DEFINE v_cause_proc INTEGER;
DEFINE v_cause_ini INTEGER;
DEFINE v_cause_cause INTEGER;
DEFINE v_cont INTEGER;

FOREACH registros FOR
SELECT sgsn, substr(apn,1,15), cgi_ci, cause_proc, cause_ini, cause_cause
INTO v_sgsn, v_apn, v_cgi_ci, v_cause_proc, v_cause_ini, v_cause_cause
FROM trafnews1
WHERE report_time = v_fecha
and hora = v_hora

FOREACH c_update FOR

SELECT p_msinf_enqu INTO v_cont
FROM traff_news_cont2
WHERE fecha = v_fecha
and hora = v_hora
and sgsn = v_sgsn
and apn = v_apn
and cgi_ci = v_cgi_ci

IF v_cont IS NULL THEN
INSERT INTO traff_news_cont2(fecha,hora,sgsn,apn,cgi_ci,p_msinf_enqu)
VALUES (v_fecha,v_hora,v_sgsn,v_apn,v_cgi_ci,0);
CONTINUE FOREACH;
END IF;

LET v_cont = v_cont + 1;

UPDATE traff_news_cont2 SET p_msinf_enqu = v_cont
WHERE CURRENT OF c_update;

END FOREACH;

END FOREACH;

END PROCEDURE;

podrian ayudarme con esto o encontrar una forma mas eficiente de hacerlo, gracias de antemano.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Ricardo

Cursores Anidados - SP

Publicado por Ricardo (1 intervención) el 20/06/2012 17:25:54
Erik Lo resolviste ?
Justo tengo q hacer algo asi.
Avisame
Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar