我有一个查询,可以生成所需的查询以进行整体执行。
我可以从原始查询中执行此操作吗?
即
SELECT distinct 'SELECT COUNT(txn_id) FROM ' || table_name from all_tab_columns WHERE OWNER='RGSWKF_PRGM' AND COLUMN_NAME like '%TXN_ID%';
上面的查询给出了我需要执行的所有查询的列表,即
SELECT COUNT(txn_id) FROM MEETING_TXN_LIST
SELECT COUNT(txn_id) FROM TXN_COMMENT
SELECT COUNT(txn_id) FROM TXN_DEAL_FEE
SELECT COUNT(txn_id) FROM TXN_RISK_ATTRIBUTE_HISTORY
SELECT COUNT(txn_id) FROM XR_TXN_CT_ROLE
SELECT COUNT(txn_id) FROM XR_TXN_CT_ROLE_EXT_HISTORY
以上只是我从原始查询中获得的一些结果
无论如何我可以自动执行原始查询的结果查询吗?
所以一个查询生成了所有查询,但我只需要执行创建查询的部分。
我希望这不会令人困惑
更新: @thatJeffSMith工作正常,但是我想减少点击次数以获得所需的结果。
现在使用pl / sql将所有结果放入数组中,然后通过那里得到总量
答案 0 :(得分:2)
在SQL Developer中,您可以要求获取查询结果并将其作为新脚本执行。
然后运行
答案 1 :(得分:1)
你可以提供类似的东西:
create or replace function get_count_for_table(iv_table in varchar2, iv_column in varchar2 default '1') return number is
ln_result number;
TYPE rcur IS REF CURSOR;
l_cur rcur;
begin
open l_cur for 'select count('||iv_column||') from ' || iv_table;
fetch l_cur into ln_result;
close l_cur;
return ln_result;
end get_count_for_table;
之后:
select table_name, column_name, get_count_for_table(table_name, column_name)
from ( SELECT distinct table_name, COLUMN_NAME
from all_tab_columns
WHERE OWNER='RGSWKF_PRGM'
AND COLUMN_NAME like '%TXN_ID%');
请注意:
列参数是可选的。
答案 2 :(得分:0)
如果您想了解每个表格中有多少数据,您可能需要考虑:
SELECT table_name,num_rows FROM all_tables where owner =' YOUR_SCHEMA_OWNER';
答案 3 :(得分:0)
关于Brian的回答,以及“现有列名”约束。
select table_name, num_rows
from dba_tables dt
where exists (select null
from all_tab_cols atc
where atc.table_name = dt.table_name
and atc.owner = dt.owner
and atc.COLUMN_NAME like '%TXN_ID%')
and owner = 'RGSWKF_PRGM';
<强>注意强>
如果%TXN_ID%可以为空并且您只想要非空结果,那么这不会给您想要的结果......
注意2
您可能需要执行命令才能在dba_tables中获得最新数据
exec dbms_stats.gather_schema_stats(ownname => 'RGSWKF_PRGM');