Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   declarar Cursor en trigger (https://www.clubdelphi.com/foros/showthread.php?t=12989)

Carlos de Pablo 03-08-2004 05:15:16

declarar Cursor en trigger
 
He intentado crear un cursor en un trigger (interbase 6.0) pero al querer grabarlo me indica error, ya sea si el declare cursor lo coloco antes del BEGIN entonces me marca error en el nombre del cursor, si lo coloco despues del begin entonces marca error en declare.. alguien sabe como colocarlo correctamente

jachguate 03-08-2004 06:39:41

Cómo estas tratando de declarar el cursor?

Exactamente que uso pretendes darle al cursor?

Te recomiendo colocar aqui un trozo de código (entre etiquetas code) para verlo.

Hasta luego.

;)

jachguate 03-08-2004 23:04:50

¿Leiste esto?

Cita:

Empezado por jachguate
(entre etiquetas code)

:confused:

Carlos de Pablo 04-08-2004 04:59:23

El codigo seria el siguiente....

Código:

CREATE TRIGGER DETALLE_SERVMAQTRIGGER1 FOR DETALLE_SERVMAQ AFTER UPDATE POSITION 0 AS
DECLARE VARIABLE CANTIDAD NUMERIC(14,3);
BEGIN
  CANTIDAD = NEW.CANTIDAD_SERVMAQ;
 
  DECLARE SALIDAS CURSOR FOR
  SELECT
        SALIDAS_DETENT, CANTIDAD_DETENT, KEY_DETENT
  FROM
        DETALLE_ENTRADAS
  WHERE
        KEY_MATERIAL = NEW.KEY_MATERIAL AND
        ((CANTIDAD_DETENT-SALIDAS_DETENT) > 0)
  ORDER BY
        FECHA_DETENT;
 
  OPEN SALIDAS;
 
  FETCH SALIDAS INTO :SalidasDet, :CantidadDet, keyEnt;

  WHILE (!SQLCODE)
  BEGIN
        ------- // codigo
        FETCH SALIDAS INTO :SalidasDet, :CantidadDet, keyEnt;
  END

  CLOSE SALIDAS;

END

sorry ya voy aprendiendo....

jachguate 04-08-2004 05:54:51

Te funcionaría:

Código SQL [-]
Create Trigger Detalle_servmaqtrigger1 
   for Detalle_ServMaq 
 After update
       Position 0 

AS

Declare Variable SalidasDet TipoDato;
Declare Variable CantidadDet TipoDato;
Declare Variable KeyEnt TipoDato;

Begin
  Cantidad = new.Cantidad_ServMaq;
  for Select Salidas_DetEnt, Cantidad_DetEnt, Key_DetEnt
        from Detalle_Entradas
       where Key_Material = New.Key_Material
         and ((Cantidad_DetEnt - SalidasDetEnt) > 0) 
       order by fecha_Detent
        into :SalidasDet, :CantidadDet, KeyEnt 
  do
    CualquierCosa;
end

También he declarado las variables, sin las que no funcionaría. Por supuesto que lo he hecho en el bloc de notas, asi que podria tener errores... pero la idea es esa.

(por cierto.... esta vez, he usado la etiqueta [sql], por ello es que la sintaxis está resaltada.

Hasta luego.

;)


La franja horaria es GMT +2. Ahora son las 21:45:39.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi