2017-05-18 5 views
0

私はPL/SQLの新機能で、この問題をコード化する方法を理解しようとしています。Forループを使用したPL/SQLプロシージャ

130の異なるテーブルスペースを使用して130の異なるスキーマに130の同一のテーブルを作成する必要があります。私はすぐにコードを実行し、次にグローバルスキーマの検索/置換を行い、コードを実行して繰り返します。

私は何をしたいことは

declare n number(3); 
    Begin 
    for n in 1..130 
    Loop 

    (run my statements) 

    End Loop; 
End; 
/

と無名ブロックを記述している現在、私が使用していステートメントは、ストレートSQLです:

CREATE TABLE xyz_101.... Tablespace xyz_101 

私はすべてを保持する変数を作成する必要があります考えています表の作成、表の変更、索引の作成、シノニムの構文の作成を行い、この変数を即座に実行します。私は各実行に "n"を渡す必要があるので、これを行う方法を完全には特定できません。

良い方法がありますか?私はカーソルを実行し、カーソルとしてシノニム 『文を作成し、?

私は他の誰かがこの問題を解決し、任意のガイダンスや洞察力を高く評価している確信して。 ありがとう「、』インデックスを作成し、「表の作成」を書くべき!

+0

は '即時実行していEXECUTE n個を使用して、テーブルを作成し、'あなたのためのトリックをしない場合は、多分 '「即時実行?。 – 9000

+0

2番目のもの。私の知る限り、DDL文ではバインド変数を使用できません。 –

+0

時代遅れのデザインのような音がします。バーチャルプライベートデータベースの機能とパーティショニングの組み合わせにより、メンテナンス性が向上する可能性があります。ただし、パーティション化にはライセンスが必要です。 –

答えて

0

使用 'テーブルのxyz_を作成:1(...)' IMMEDIATE

for n in 1 .. 130 loop 
     execute immediate 'create table t'||n||' (dummy char(1))'; 
end loop; 
関連する問題