私はトリガーを行う必要がありますが、私がしようとしている唯一の違いは ':new.COLUMN_NAME'と ':old.COLUMN_NAME'に基づいて動的値を取得することですトリガー内の動的column_nameに応じた動的column_value
私は、クエリ内のテーブルの列を持っていますし、その後、私はLOOPのためにそれを実行...
これが私のトリガーである:私はトリガーをコンパイルするとき
CREATE OR REPLACE TRIGGER aft_ins_soliccambio
AFTER INSERT OR DELETE OR UPDATE
ON SEG_V_SOLICCAMBIO
REFERENCING OLD AS OLD NEW AS NEW
FOR EACH ROW
DECLARE
old_col_value VARCHAR2 (4000);
new_col_value VARCHAR2 (4000);
BEGIN
FOR REC IN ( SELECT OWNER, TABLE_NAME, COLUMN_NAME
FROM all_tab_columns
WHERE OWNER = 'EUCEDA' AND (TABLE_NAME = 'SEG_V_SOLICCAMBIO')
ORDER BY column_id)
LOOP
EXECUTE IMMEDIATE ' select :new.' || REC.COLUMN_NAME || ' from dual'
INTO new_col_value;
pkg_tumi.insert_auditoria ('SEG_V_SOLICCAMBIO',
REC.COLUMN_NAME,
:new.EMPR_IDEMPRESA_N,
fn_get_pk ('SEG_V_SOLICCAMBIO', 1),
fn_get_pk ('SEG_V_SOLICCAMBIO', 2),
fn_get_pk ('SEG_V_SOLICCAMBIO', 3),
fn_get_pk ('SEG_V_SOLICCAMBIO', 4),
fn_get_pk ('SEG_V_SOLICCAMBIO', 5),
fn_get_pk ('SEG_V_SOLICCAMBIO', 6),
1,
'',
new_col_value,
SYSDATE,
NULL);
END LOOP;
END;
それはdoesnのエラーはスローされませんが、テーブルに新しい値を挿入しようとすると、トリッジを作成していますRそれは、このエラースロー:私は問題が間にあることに気づいた問題点をチェック
ORA-01008: no todas las variables han sido enlazadas ORA-06512: en "EUCEDA.AFT_INS_SOLICCAMBIO", línea 10 ORA-04088: error durante la ejecución del disparador 'EUCEDA.AFT_INS_SOLICCAMBIO'
を「.. IMMEDIATE EXECUTE」私はのためにそれがある参照してください。new.'dynamic_column」が認識されていません。助けてください!私はこの問題で何時間もあり、私はそれを解決することができません。
ありがとう、ごめんなさい、私の英語です。
ありがとうございました!!!それは私がそれを使用したときに非常に便利でした。私はあきらめて答えは光のようでした(= 私はそれを試してきましたが、それはうまくいきました(私のコードを調整してください)。ありがとうございます!^^ – user1112291