3

我有一个案例,我有 70 个 oracle 模式,我必须在每个模式上执行相同的脚本

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

可以用CURSOR吗?

现在我正在做

ALTER SESSION SET current_schema = SCHEMA_1;
====
ALTER SESSION SET current_schema = SCHEMA_2;
====
ALTER SESSION SET current_schema = SCHEMA_3;
====

我用我的脚本替换“====”,我用记事本++做,但我必须手动准备脚本,如果脚本很长,我必须将它分成多个块而不用换行并进行替换对于每个块

我想自动化一点。

4

1 回答 1

4

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

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

@myscriptfile.sql

如果您想为每个模式执行一次,您可以通过查询字典来生成代码:

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

然后,您只需在 sqlplus 中复制/粘贴该查询的结果。可能可以将其假脱机以归档并执行它。

于 2011-03-14T10:31:31.347 回答