在查询中执行查询需要什么?

时间:2014-07-23 15:23:15

标签: sql oracle oracle-sqldeveloper

我有一个查询,可以生成所需的查询以进行整体执行。

我可以从原始查询中执行此操作吗?

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将所有结果放入数组中,然后通过那里得到总量

4 个答案:

答案 0 :(得分:2)

在SQL Developer中,您可以要求获取查询结果并将其作为新脚本执行。

So run as script, then hit the button on the results toolbar

然后运行

Use the execute as script button to run all of them

答案 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');