sqlplus の引数からSQLファイル(外部のSQL文)のIN句に複数の条件を渡したく、シェルスクリプトで以下のように記述したのですが、引数に指定した文字列が正しく渡されず、困っています。
bash
1sqlplus -l -s @example.sql "'a','b'" 2# or 3query="'a','b'" 4sqlplus -l -s @example.sql $query
この場合、'a','b'
が&1
になることを想定していましたが、
'a'
が&1
, ,'b'
が&2
になってしまいます。
sqlplusの引数は通常のコマンドと同じく空白文字で区切られるだけではなく、シングルクォーテーションの直後でも区切られてしまうのでしょうか。
また、区切られないように(通常通り、空白文字で区切るように)する方法はございますでしょうか。
追記
sql
1前略 2WHERE 3COLUMN1 IN (&1)
上記のSQL文で、「&1」にsqlplusの実行時引数から文字列を渡す(=動的に条件を指定する)ことが今回の目的になりますが、
このカラムはVARCHAR2(文字列)型のため、条件をシングルクォーテーションで囲む必要があります。そのため、「COLUMN1の値がaかb」としたい場合、'a', 'b'
という文字列がそのまま&1にセットされなければ、構文エラーになってしまいます。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/11/22 16:39 編集
2017/11/23 04:29
2017/11/27 06:01