0

こんにちは、トリガーで select ステートメントから行を取得しようとしましたが、予期しないトークンのエラーが発生しました: R

         CREATE TRIGGER PUBLIC.TRIGGERNAME AFTER UPDATE ON     PUBLIC.CLIENTE_OFFERENTE 
             REFERENCING NEW ROW AS NUOVO 
                FOR EACH ROW 
                  BEGIN ATOMIC 
                   DECLARE r RECORD;
                   SET r=(SELECT offerta.IDIMMOBILE as ID, immobile.prezzomax as costo FROM PUBLIC.OFFERTA join immobile on immobile.idImmobile=offerta.idImmobile WHERE IDOFFERTA=NUOVO.IDOFFERTA);
                  IF NUOVO.STATO='Venduto'THEN 
                     INSERT INTO PUBLIC.VENDITE(IDCLIENTE,IDIMMOBILE,COSTO)VALUES(NUOVO.IDCLIENTE,r.ID,r.costo);
                   END IF;
                  END
4

1 に答える 1

0

RECORD 型の変数を DECLARE することはできません。

select ステートメントから 2 つの値を取得したいとします。したがって、2 つの変数を宣言する必要があります。

BEGIN ATOMIC 
    DECLARE VAR_ID INT;
    DECLARE VAR_COSTO INT;
    SET (VAR_ID, VAR_COSTO) =(SELECT offerta.IDIMMOBILE as ID, immobile.prezzomax as costo FROM PUBLIC.OFFERTA join immobile on immobile.idImmobile=offerta.idImmobile WHERE IDOFFERTA=NUOVO.IDOFFERTA);
    IF NUOVO.STATO='Venduto'THEN 
        INSERT INTO PUBLIC.VENDITE(IDCLIENTE,IDIMMOBILE,COSTO)VALUES(NUOVO.IDCLIENTE,VAR_ID,VAR_COSTO);
    END IF;
END
于 2012-09-21T13:40:17.137 に答える