Sql 尝试在查询中执行查询
我有一个查询,其中显示了我需要执行的另一个查询: 因此,第一部分只是将我要执行的查询的第一部分作为文本写出Sql 尝试在查询中执行查询,sql,oracle,Sql,Oracle,我有一个查询,其中显示了我需要执行的另一个查询: 因此,第一部分只是将我要执行的查询的第一部分作为文本写出 SELECT distinct 'SELECT COUNT(txn_id) FROM ' 然后,我添加所有我想要在其上执行查询初始部分的表 table_name from all_tab_columns WHERE OWNER='RGSWKF_PRGM' AND COLUMN_NAME like '%TXN_ID%'; 所以我的全部疑问是 SELECT distinct 'SELEC
SELECT distinct 'SELECT COUNT(txn_id) FROM '
然后,我添加所有我想要在其上执行查询初始部分的表
table_name from all_tab_columns WHERE OWNER='RGSWKF_PRGM' AND COLUMN_NAME like '%TXN_ID%';
所以我的全部疑问是
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 MEETING_TXN_LIST
然后
然后
等等。一次查询
使用带单引号的union all可以得到包含文本的结果
SELECT COUNT(txn_id) FROM TXN_COMMENT union all ..etc...
如果没有单引号,则会出现以下错误
ORA-00936: missing expression
00936. 00000 - "missing expression"
我建议您使用union all连接的子查询生成一个查询: 对此的查询基本上是:
SELECT 'SELECT ''' || table_name || ''' as table_name, COUNT(txn_id) as cnt
FROM ' || table_name || ' union all '
from all_tab_columns
WHERE OWNER = 'RGSWKF_PRGM' AND COLUMN_NAME = 'TXN_ID';
请注意,您需要从最后一行中删除最终的union all。而且,我将查询更改为只查找列TXN_ID,因为这就是您在查询中使用的内容。您是否希望进行一次伟大的查询?你想对这些结果做些什么?@paqogomez是的,我想提出一个大问题,请看我对你的评论回复answer@paqogomez我已经回复了你的评论,但由于某些原因,我不能在你的回答下的评论部分标记和提及你的用户名
select txt
|| case
when row_number() over (order by rn desc) = 1 then null
else ul
end
from (select 'SELECT '''
|| table_name
|| ''' as table_name, COUNT(txn_id) as cnt FROM '
|| table_name
as txt
,' union all ' ul
,rownum rn
from all_tab_columns
where OWNER = 'RGSWKF_PRGM' and COLUMN_NAME = 'TXN_ID')
order by rn
ORA-00936: missing expression
00936. 00000 - "missing expression"
SELECT 'MEETING_TXN_LIST' as table_name, COUNT(txn_id) as cnt FROM MEETING_TXN_LIST UNION ALL
SELECT 'TXN_COMMENT', COUNT(txn_id) FROM TXN_COMMENT union all
SELECT 'TXN_DEAL_FEE' COUNT(txn_id) FROM TXN_DEAL_FEE;
SELECT 'SELECT ''' || table_name || ''' as table_name, COUNT(txn_id) as cnt
FROM ' || table_name || ' union all '
from all_tab_columns
WHERE OWNER = 'RGSWKF_PRGM' AND COLUMN_NAME = 'TXN_ID';
select txt
|| case
when row_number() over (order by rn desc) = 1 then null
else ul
end
from (select 'SELECT '''
|| table_name
|| ''' as table_name, COUNT(txn_id) as cnt FROM '
|| table_name
as txt
,' union all ' ul
,rownum rn
from all_tab_columns
where OWNER = 'RGSWKF_PRGM' and COLUMN_NAME = 'TXN_ID')
order by rn