2017-08-29 8 views
1

動的にスキーマを作成したい、つまり入力を促すはずです。またはコレクション、ネストした表を使用してPL/SQLコード・ブロック(つまりプロシージャ、関数など)からユーザーを作成する方法は?PL/SQLコード・ブロックを使用してOracleデータベースにスキーマを作成する方法は?

+1

pl/sqlにプロンプ​​トが表示されません。 EXECUTE IMMEDIATEを使用して動的SQLを実行します。 – OldProgrammer

+0

それでは、 'create users'ステートメントをEXECUTE IMMEDIATEにするためにpl/sqlで書くべきですか?あなたは例を挙げることができますか?ネストした表の配列からユーザー名を取ることを検討してください。 –

+0

[Liquibase](http://www.liquibase.org/)などのプログラムビルドライブラリを調査しましたか? – APC

答えて

2

私はあなたにそのための小型の例を与える:

ここ
create or replace procedure p(p_user varchar2) is 
begin 
    execute immediate 'create user '||p_user||' identified by x'; 
end; 
/

begin 
    p('&user'); 
end; 
/

手順は、あなたのDDLコマンドを一緒に入れて使用することができますパラメータを取得します。プロシージャは何とか呼び出さなければなりません。 sqlplusから呼び出すことも、Webサーバーやデスクトップアプリケーションから実行することもできます。最後の4行は、sqlplusから呼び出す方法の例として書いてあります。 Sqlplusは、ユーザーからの入力をプロンプトして読み取ることができます。

関連する問題