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

スキーマごとに1回実行する場合は、辞書にクエリを実行してコードを生成できます。

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

次に、そのクエリの結果をコピーしてsqlplusに貼り付けます。それをファイルにスプールして実行することはおそらく可能です。

于 2011-03-14T10:31:31.347 に答える