如何遍历不同的模式并在每个模式上执行一些sql?

时间:2011-03-14 10:18:10

标签: oracle session schema alter

我有一个案例,我有70个oracle模式,我必须在每个

上执行相同的脚本

这将是实现这一目标的最佳方式。

是否可以使用CURSOR?

现在我正在用

做这件事
ALTER SESSION SET current_schema = SCHEMA_1;
====
ALTER SESSION SET current_schema = SCHEMA_2;
====
ALTER SESSION SET current_schema = SCHEMA_3;
====

我用我的脚本替换“====”,我用Notepad ++做它但我必须手动准备脚本,如果脚本很长,我必须将它分成多个块而不需要新的行和为每个块做一个替换

我想再多一点自动化。

1 个答案:

答案 0 :(得分:4)

我提供以下半自动方式,不会自动执行您的任务,但会减少搜索和替换。

如果您使用的是SQL * Plus,则可以使用以下语法执行文件:

@myscriptfile.sql

如果您希望为每个架构执行一次,则可以通过查询字典来生成代码:

select 'ALTER SESSION SET current_schema = ' || owner || ';
       @myscriptfile.sql'
  from dba_users
 where <your filter>;

然后你只需要在sqlplus中复制/粘贴该查询的结果。可能会将其假脱机到文件并执行它。