begin
for t in (select table_name from dba_tables where owner = 'BILL') loop
execute immediate 'delete from ' || t.table_name ||
' where id = ''test''';
end loop;
end;
/
如果该模式中的所有表都具有名为 id 的列名(如您所指示的那样),则此方法应该有效 . 否则,您应该与 dba_tab_columns 一起加入以确保仅选择具有此类列的表 .
如果 id 是其他表引用的主键,它也将失败 . 在这种情况下,您可以将 execute immediate 嵌入到
begin
execute immediate '....';
exception when others then
dbms_output.put_line('failed to delete in ' || t.table_name);
end;
1 回答
我跟
execute immediate
一起去:如果该模式中的所有表都具有名为
id
的列名(如您所指示的那样),则此方法应该有效 . 否则,您应该与dba_tab_columns
一起加入以确保仅选择具有此类列的表 .如果
id
是其他表引用的主键,它也将失败 . 在这种情况下,您可以将execute immediate
嵌入到