我需要执行以下操作。
select table_name, to_number(extractvalue(xmltype( dbms_xmlgen.getxml('select count(*) X from SCHEMA.'||table_name)) ,'/ROWSET/ROW/X')) as count from all_tables tables where owner = 'SCHEMA' order by 1,2;
它提供两列:表名和当前行数。
将此选择的结果存储在变量中。
然后从外部接口在几张表中插入一些行。
再次执行以上选择。
我尝试了以下操作,但出现错误:
“参数过多”
declare name VARCHAR2(100); begin select ( select table_name, to_number(extractvalue(xmltype( dbms_xmlgen.getxml('select count(*) X from SCHEMA.'||table_name)) ,'/ROWSET/ROW/X')) as count from all_tables tables where owner = 'SCHEMA' ) into name from dual; end;
答案 0 :(得分:0)
您可以使用CTAS
:
CREATE TABLE before_test
AS
select table_name,
to_number(extractvalue(xmltype(
dbms_xmlgen.getxml('select count(*) X from SCHEMA.'||table_name))
,'/ROWSET/ROW/X')) as count
from all_tables tables where owner = 'SCHEMA';
然后加载数据并再次运行,但将其命名为after_test
。
当您同时获得两个表时,您可以使用以下方法找到区别:
SELECT * FROM before_test MINUS SELECT * FROM after_test;
SELECT * FROM after_test MINUS SELECT * FROM before_test;