2011-08-16 4 views
2

複数のsqlファイルを実行し、それらにパラメータを渡すバッチファイルがあります。 入力パラメータは、バッチファイルによって読み取られるtxtファイルに格納されます。バッチファイルでvarchar paramをsqlファイルに渡す

SQLのIN節にvarchar値を渡そうとしています。

入力ファイルで

私はこのエントリ

var1="'tommy','jim'" 

バッチファイルで

<code to read file , assuming %1 has the var1 value> 
set param=%~1 

sqlplus %DBCONN% @%programFolder%\test.sql %param% 

test.sql内(名前はVARCHAR2です)

select * from table where name in (&1); 

これは「ジムの けどで、それは私が右SQLのstmt、そのディスプレイ「トミー」の前にエコー場合

select * from table where name in (tommy);


を実行しようとして、無効な番号 を言って、エラーが発生しますSQLの削除ジムと単一引用符...

助けてください!


は、今私は var1="'''tommy''','''jim'''"

それはselect * from table where name in ('tommy');

ようになるように、入力ファイル内のエントリを編集した。しかし、それは第二の値にカンマを含める方法

任意の手掛かりを切り捨て??

答えて

1

は、最後に、入力ファイルが

方法を見つけました問題は、カンマを渡すためのいくつかの方法があったはずです! 誰かがわかったら私にお知らせください。

ありがとうございます。

0

チルダ(~)は、変数から引用符を取り除きます。

入力ファイルにvar1='tommy','jim'、バッチスクリプトにset param=%1を使用してみてください。 var1=('tommy','jim')

はなぜカンマを取っていたこの作品 select * from table where name in &1;

が、私は見当がつかないSQLファイルからかっこを削除し、そのようなだった -

+0

チルダを削除すると、パラメタはバッチで分離されます。 sqlが 'tommy'だけを表示する前に 'echo%var1%' – Sky