Мне нужно сделать триггер, но единственное отличие, которое я пытаюсь сделать, это получить динамическое значение в соответствии с ': new.COLUMN_NAME' и ': old.COLUMN_NAME'
I'mприведение столбцов таблицы в запросе, и после этого я запускаю ее для 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;
, когда я компилирую триггер, он невыдает любую ошибку, но когда я пытаюсь вставить новое значение в таблицу, в которой выполняется триггер, она выдает эту ошибку:
ORA-01008: нет переменных todas las han sido enlazadas ORA-06512:ru "EUCEDA.AFT_INS_SOLICCAMBIO", línea 10 ORA-04088: ошибка durante la ejecución del disparador 'EUCEDA.AFT_INS_SOLICCAMBIO'
Проверка проблемы, которую я осознал, что проблема существует, но существуетЯ вижу, что это из-за: new.'dynamic_column 'не распознается.Пожалуйста помоги!Я много часов с этой проблемой и не могу ее решить.
Спасибо и извините за мой английский.