在所有模式中运行查询

时间:2014-08-07 15:29:57

标签: plsql plsqldeveloper

您好,我是Oracle的新手。我有一个查询,我需要对数据库中的所有模式运行,让我们说(scott,hr,exampleetc)在数据库中有表事务。     有人可以帮助什么是最好的方法吗?我在数据库中有大约30个模式我不能通过对所有模式运行它来实现它,因为它很耗时。     我认为plsql将是最好的方法,但我自己也不够了解这一点。

query example:  
select sum(amount)
from abc.transaction t1
where t1.payment_method ='transfer' 
and TO_char(t1.result_time_stamp,'MONTH') = TO_char(sysdate,'MONTH')
order by t1.time_stamp asc;

谢谢你的帮助..

1 个答案:

答案 0 :(得分:0)

我不确定你想要运行什么样的查询,如果他们需要一次聚合所有表中的数据,或者你想查看并在每个表上运行一个命令,但这里有一些应该让你开始。它是一个游标,可以找到所有名为“transaction”的表。如果这些将是临时查询,我只需要复制下面光标的表名输出,编写一个基本查询并将其保存在某处或使其成为某种程序。然后在将来修改并重新使用它。

DECLARE
CURSOR c1
IS  
SELECT owner, table_name
  FROM all_tables
  WHERE upper(table_name) = 'TRANSACTION';
BEGIN
FOR c1rec in c1
LOOP
    dbms_output.put_line(c1rec.owner||'.'||c1rec.table_name);
END LOOP;
END;