oracle验证插入然后删除动态表

时间:2018-11-02 15:21:03

标签: sql oracle plsql sql-insert sql-delete

有什么方法可以验证我的插入表是否成功插入辅助表,然后在不使用触发器的情况下从原始表中删除这些行。

所以我有这个查询:有2个动态表n_tab和n_tab2

testes:= 'INSERT all into ' || n_tab2 || ' SELECT * FROM ' || n_tab || ' where criado_em< ' || SYSDATE;
EXECUTE IMMEDIATE testes;

在此插入之后,我想验证是否已插入所有行以及在那之后

stmt_del:= 'DELETE FROM ' || n_tab || ' WHERE EXISTS (SELECT 1
 FROM ' || n_tab2 || ' WHERE '  'need to find a way to associate the pk and fk dinamically'
EXECUTE IMMEDIATE testes;

谢谢。

1 个答案:

答案 0 :(得分:0)

如果找不到任何方法,这是使用SQL%ROWCOUNT的方法

DECLARE

stmt varchar2(100);
mycolumn NUMBER := 100 ;

BEGIN

stmt := 'insert into mytable values('||mycolumn||')';
execute immediate stmt;
dbms_output.put_line('value '||SQL%ROWCOUNT);

IF SQL%ROWCOUNT > 1 THEN

stmt_del:= 'delete from mytable where condition';
EXECUTE IMMEDIATE testes;
END IF;

END;