DB2 - trigger

 
Vista:

trigger

Publicado por emilio (3 intervenciones) el 11/07/2007 19:21:06
Necesito crear un cursor en db2 y lo declaro de la siguiente forma dentro del begin atomic y me da error como si no le gustara el for
DECLARE NSTACOM CURSOR FOR SENTENCIA.....
la sentencia la pruebo en la bvase y anda bien.
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

RE:trigger

Publicado por CARMENGUTI (1 intervención) el 26/06/2008 17:53:32
NECESITO CREAR UN TRIGGER EN DB2, PARA ACTUALIZAR UNA TABLA QUE REQUIERE HACER UN SELECT A OTRA TABLA, LO ESTOY HACIENDO DE LA SIGUIENTE FORMA

CREATE TRIGGER TESPROTPRU.T_DISAD
AFTER UPDATE OF TANNUL,TCDSTO,TCDCON,TCDEL0,TBLELE
ON TESPROTPRU.DISAD00F
REFERENCING OLD AS VIEJO
NEW AS NUEVO FOR EACH ROW MODE DB2ROW
A : BEGIN

NUEVO.TCDDIV = (SELECT JCDDI2 FROM TESPROTPRU.DISAL00F
WHERE JCDAWR = TCDAWR),
IF (VIEJO.TANNUL <> NUEVO.TANNUL ) THEN
INSERT INTO TESPROTPRU.LOGMODIFIC (ARCHIVO, LLAVEPRIM,TIPODOC, DOCUMENTO, TERCERO, CAMPO,
NOMBREC, VALOROLD, VALORNEW, USUARIO, FECHA)
VALUES ( 'DISAD00F','NRO.ASIGNACION:' CONCAT NUEVO.TCDAWR CONCAT '-' CONCAT 'LIN:'
CONCAT CHAR(NUEVO.TLINEN) CONCAT '-' CONCAT 'ROLLO:' CONCAT NUEVO.TCDEL0
CONCAT '-' CONCAT 'PIEZA:' CONCAT NUEVO.TCDCON,
NUEVO.TCDDIV, NUEVO.TCDEL0,NUEVO.TCDCON,
'TANNUL', 'ESTADO DE LA ASIGNACION DEL ELEMENTO', VIEJO.TANNUL, NUEVO.TANNUL,USER,
CURRENT TIMESTAMP ) ;
END IF;
END A ;

AL GENERARLO ME DICE NUEVO.TCDDIV NO ES VALIDO

NECESITO AYUDA URGENTE

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

RE:trigger

Publicado por emilio (3 intervenciones) el 26/06/2008 18:12:55
Mira te paso esto que es lo que use yo obviamente tendras que cambiar las tablas y las sentencias dentro del begin, por falta de tiempo no te lo puedo dar que significa cada caso, pero si necesitas que te explique algo sobre que hace consultamelo, pero investigalo, creo que te resolveria tus ncesidades.

CREATE TRIGGER "ADMINISTRATOR"."MKTINSGASTOHIS"
AFTER INSERT ON MKTGASTOFAC REFERENCING NEW AS NSTATUS FOR EACH ROW MODE DB2SQL
BEGIN ATOMIC
DECLARE vCDGAST SMALLINT DEFAULT 0;
DECLARE vIDOP CHARACTER(15) DEFAULT 'A';
SET (vCDGAST,vIDOP) = (SELECT CDGASTO, IDOPR
FROM MKTGASTOSCAB
WHERE IDGASTO=NSTATUS.IDGASTO);
IF(NSTATUS.IDSTATUSFAC = 'P')
THEN
INSERT INTO MKTGASTOHIS (IDGASTO, CDGASTO, IDSTATUSORI, IDSTATUS,
IDOPR, FECUPDT, HORAUPDT, PROCESSMAIL)
VALUES (NSTATUS.IDGASTO, vCDGAST, NSTATUS.IDSTATUSFAC, '1',
vIDOP, NSTATUS.FECFAC, TIME(CURRENT TIMESTAMP),'I');
END IF;
IF(NSTATUS.IDSTATUSFAC = 'E')
THEN
INSERT INTO MKTGASTOHIS (IDGASTO, CDGASTO, IDSTATUSORI, IDSTATUS,
IDOPR, FECUPDT, HORAUPDT, PROCESSMAIL)
VALUES (NSTATUS.IDGASTO, vCDGAST, NSTATUS.IDSTATUSFAC, '2',
vIDOP, NSTATUS.FECFAC, TIME(CURRENT TIMESTAMP), 'I');
END IF;
IF(NSTATUS.IDSTATUSFAC = 'R')
THEN
INSERT INTO MKTGASTOHIS (IDGASTO, CDGASTO, IDSTATUSORI, IDSTATUS,
IDOPR, FECUPDT, HORAUPDT, PROCESSMAIL)
VALUES (NSTATUS.IDGASTO, vCDGAST, NSTATUS.IDSTATUSFAC, '3',
vIDOP, NSTATUS.FECFAC, TIME(CURRENT TIMESTAMP), 'I');
END IF;
IF(NSTATUS.IDSTATUSFAC = 'Y')
THEN
INSERT INTO MKTGASTOHIS (IDGASTO, CDGASTO, IDSTATUSORI, IDSTATUS,
IDOPR, FECUPDT, HORAUPDT, PROCESSMAIL)
VALUES (NSTATUS.IDGASTO, vCDGAST, NSTATUS.IDSTATUSFAC, '4',
vIDOP, NSTATUS.FECFAC, TIME(CURRENT TIMESTAMP), 'I');
END IF;
IF(NSTATUS.IDSTATUSFAC = 'C')
THEN
INSERT INTO MKTGASTOHIS (IDGASTO, CDGASTO, IDSTATUSORI, IDSTATUS,
IDOPR, FECUPDT, HORAUPDT, PROCESSMAIL)
VALUES (NSTATUS.IDGASTO, vCDGAST, NSTATUS.IDSTATUSFAC, '5',
vIDOP, NSTATUS.FECFAC, TIME(CURRENT TIMESTAMP), 'I');
END IF;
END
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

RE:trigger

Publicado por emilio (3 intervenciones) el 27/06/2008 03:26:52
YYYYYYYYYYYYYYYYYYYY sirvio o nooooooo?? espero que me avises si te sirvio o nooo.
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