2017-05-30 16 views
2

これは私のコードです:トリガpl/sqlをトリガした行を描画する方法は?

CREATE OR REPLACE TRIGGER TR_DEL 
AFTER INSERT OR UPDATE 
ON DIZIONARIO_CHIAVI_DA_ESCLUDERE 
FOR EACH ROW 
DECLARE 
    CURSOR c_cursore_prendi_riga IS 
     SELECT CURRICULUM_CHIAVE_RICERCA 
     FROM PERSONA; 
    myCursor PERSONA.CURRICULUM_CHIAVE_RICERCA%TYPE; 
BEGIN 
    OPEN c_cursore_prendi_riga; 
    LOOP 
    FETCH c_cursore_prendi_riga INTO myCursor; 
    EXIT WHEN c_cursore_prendi_riga%NOTFOUND; 
    dbms_output.put_line('oo='|| myCursor); 

    -- Here I need it  

    END LOOP; 
    CLOSE c_cursore_prendi_riga; 
END; 

私はトリガーを開始した行を必要とし、感謝

+1

あなたはコラム/列を参照します':new'または':old'疑似レコードを使ってトリガを起動する行のうちの1つです。たとえば、 ':new.col_name'などです。 –

+0

それは動作します!ありがとう! –

答えて

1

ニコラスクラスノフは答えでこれを入れて、右です:

:昔は以下のとおりです。新しく、疑似レコードとして使用されます。ドキュメントはここにある:

https://docs.oracle.com/database/121/TDDDG/tdddg_triggers.htm#TDDDG50000

、ここでこれらの疑似レコードの説明:

https://docs.oracle.com/database/121/LNPLS/triggers.htm#LNPLS99955

最も重要なこと:擬似レコードは、「通常の」レコードのように使用することはできません。あなたが使用することはできません例えば、各列...

に名前を付ける必要があります:

my_special_function(:new); 

あなたが「本物」のレコードを作成する必要がウィル:

declare 
    myrec mytable%rowtype; 
begin 
    myrec.id := :new.id; 
    myrec.name := :new.name; 
    myrec.birthdate := :new.birthdate; 
    etc etc etc 
    my_special_function(myrec); 
end 
関連する問題