VAmos avanzando, ahora se compila bien. Observese que he aumentado el tamaño de la variable sentencia.
Pero a la hora de hacer un cambio en la tabla, me dice que no puede convertir a string un valor - no especifica cual - , pero que tiene que ser el propio valor del campo.
Seguimos a la espera.
Código SQL
[-]AS
declare variable WCAMPO varchar(50);
declare variable sentencia varchar(500);
begin
FOR SELECT RF.RDB$Field_Name CAMPO
FROM RDB$Relation_Fields RF
WHERE RF.RDB$Relation_Name = 'TABLA'
INTO :WCAMPO
DO
BEGIN
WCAMPO= TRIM(WCAMPO);
sentencia = 'IF (new.'||:WCAMPO ||'IS NOT NULL) THEN '||
'BEGIN '||
'IF (OLD.'||:WCAMPO||' <> NEW.'||:WCAMPO||' ) THEN ' ||
'INSERT INTO AUDITORIA (IDAUDITORIA, FECHA, USUARIO, IDREGISTRO,'||
'TABLA, CAMPO, VALORVIEJO,VALORNUEVO) '||
'VALUES (GEN_ID(AUDITORIA,1), '||'''NOW'''||', NEW.USUARIOMODIF, NEW.IDPOLIZA,'||
'''POLIZA'','''||:WCAMPO||''', CAST(OLD.'||:WCAMPO||' AS VARCHAR(50)),CAST( NEW.'||:WCAMPO||' AS VARCHAR(50)) ); '||
'END' ;
END
execute statement sentencia;
end