2017-11-21 160 views
1

pl/sqlプロシージャを含む.sqlファイルを呼び出すコマンドをバッチファイルで作成しました。しかし、私はバッチファイルからプロシージャ全体で共通のPL/SQLプロシージャでaパラメータを設定する必要があります。Oracle - PL/SQLプロシージャを含むSQLファイルにバッチファイルからパラメータを渡す方法

バッチファイルは以下のとおりです。

set parameterOne=%1 
set parameterTwo=%2 


sqlplus -s uid/pwd filepath/filename.sql %parameterOne %parameterTwo 

.sqlファイルのPL/SQLプロシージャは次のとおりです。

DECLARE parameterOneValue  INT; 
     parameterTwoValue  INT; 
BEGIN 

parameterOneValue := $(parameterOne); 
parameterTwoValue := $(parameterTwo); 

//procedure block 

END; 

は、私はそれぞれの.sqlファイルにparameterOneValueparameterTwoValueにバッチファイルからparameterOneparameterTwo属性を設定する必要があります。誰もこれに解決策を提供できますか?

+0

'sqlplus ...%parameterOne%parameterTwo'は' sqlplus ...%parameterOne%%parameterTwo% 'に変更する必要があります – jeb

答えて

0

SET DEFINE ONを使用し、可変置換に&を使用してください。

例えば、

あなたのバッチファイル:PL/SQLブロック内

set parameterOne=%1 
set parameterTwo=%2  

sqlplus -s uid/pwd filepath/filename.sql %parameterOne %parameterTwo 

SQL * Plusの置換:

parameterOneValue := &1; 
parameterTwoValue := &2; 

&は、あなたがに設定されている実際の値を代入しますがバッチファイル。

+0

入力いただきありがとうございますが、これは動作していません。次のエラーが表示されます。 "orgidの値を入力してください: [exec] SP2-0546:ユーザーが割り込みまたはEOFを検出しました。" – Nancy

+1

"&1"と "&2"にする必要があります。 SQL * Plusは、位置的にパラメータを受け入れます。 – Ben

+0

@Benああ、コピー貼りです。訂正してくれてありがとう。 –

関連する問題