CREATE OR REPLACE TRIGGER lds_2800 AFTER INSERT OR UPDATE OR DELETE ON A REFERENCING NEW AS N FOR EACH ROW
declare tbn varchar(20) := 'A' ;colname varchar(100);
--sqlstmt varchar(255);
begin
for colname in (select column_name cn from user_tab_cols where table_name='A')
loop
dbms_output.put(:N.colname.cn);
--execute immediate sqlstmt;
end loop;
dbms_output.put_line('');
end;报错:错误的赋值变量 N.colname而且这个DBMS_output.put_line()好像不能用execute immediate sqlstmt动态执行,因为我不能预先知道这个表的字段,所以必须要动态的执行,求助。
declare tbn varchar(20) := 'A' ;colname varchar(100);
--sqlstmt varchar(255);
begin
for colname in (select column_name cn from user_tab_cols where table_name='A')
loop
dbms_output.put(:N.colname.cn);
--execute immediate sqlstmt;
end loop;
dbms_output.put_line('');
end;报错:错误的赋值变量 N.colname而且这个DBMS_output.put_line()好像不能用execute immediate sqlstmt动态执行,因为我不能预先知道这个表的字段,所以必须要动态的执行,求助。
试试
dbms_output.put_line(colname.cn);这样要是不行,就不知道怎么写了
dbms_output.put(colname);
declare
tbn varchar(20) := 'A' ;
colname varchar(100);
res varchar(100);
--sqlstmt varchar(255);
begin
for colname in (select column_name cn from user_tab_cols where table_name ='A')
loop
res:=colname.cn;
dbms_output.put(:N.colname.cn);
--execute immediate sqlstmt;
end loop;
dbms_output.put_line('');
end;试试这个吧
declare
tbn varchar(20) := 'A' ;
colname varchar(100);
res varchar(100);
--sqlstmt varchar(255);
begin
for colname in (select column_name cn from user_tab_cols where table_name ='A')
loop
res:=colname.cn;
dbms_output.put(res);
--execute immediate sqlstmt;
end loop;
dbms_output.put_line('');
end;发错了