Unix シェル・スクリプトで db2 SQL のパラメーターを渡す

Unix シェル・スクリプトで db2 SQL のパラメーターを渡す

Unixシェルスクリプトへの入力値に基づいてテーブルから特定の行を削除したいと思います。シェルスクリプトで接続して終了しています。

これで、このフィールドがwhere句にハードコードされていることがわかります。

この値をスクリプトにパラメータとして渡すにはどうすればよいですか?

#!/bin/ksh
set -x
export DB2INSTANCE=db2clnt1
db2 ""CONNECT TO DBNAME user USER using passwd""
db2 ""delete from table where field =\'abcdefghijklmn\'""
db2 ""CONNECT RESET"" 

答え1

他のコミュニティからの回答をご覧ください。...

DB2 CLPはパラメーター・マーカーの使用をサポートしません。

ただし、db2を非対話式(つまりシェル上)で実行している場合は、シェル変数を置き換えることができます。

これにより、次の内容が残ります。

#!/bin/ksh
set -x
export DB2INSTANCE=db2clnt1
db2 "CONNECT TO DBNAME user USER using passwd"
db2 "delete from table where field = '${1}'"
db2 "CONNECT RESET"

コマンドラインからフィールド値を介して呼び出し可能

./myksh.sh "delete-this-field"

しかし、覚えておくことが重要です…

...これは単にシェル置換を使用するだけなので、文字列の周りに一重引用符を追加する必要があります... [そして]文字列に一重引用符がある場合、これはより複雑になります。

関連情報