Oracle PL / SQL: bucle sobre columnas de disparador dinámicamente

Dentro de un activador, estoy tratando de recorrer todas las columnas de una tabla y comparar los nuevos valores con los valores anteriores. Esto es lo que tengo hasta ahora:

CREATE OR REPLACE TRIGGER "JOSH".TEST#UPD BEFORE 
UPDATE ON "JOSH"."TEST_TRIGGER_TABLE" REFERENCING OLD AS OLD NEW AS NEW FOR EACH ROW
declare    
   oldval varchar(2000);   
   newval varchar(2000);   
begin    
   for row in (SELECT column_name from user_tab_columns where table_name='TEST_TRIGGER_TABLE') loop  
     execute immediate 'select :old.'||row.column_name||' from dual'   into oldval;  
     execute immediate 'select :new.'||row.column_name||' from dual'   into newval;  
     --Do something here with the old and new values
   end loop;  
end;

El disparador se compila, pero cuando se dispara, obtengo:

ORA-01008: no todas las variables enlazadas

en la primera ejecución inmediata porque espera un valor para:old. :old y:new ya están definidos como parte del activador, pero parece que ejecutar inmediatamente no puede ver esas variables.

¿Hay alguna forma de iterar dinámicamente sobre los valores de la columna en un disparador?

Respuestas a la pregunta(4)

Su respuesta a la pregunta