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"
しかし、覚えておくことが重要です…
...これは単にシェル置換を使用するだけなので、文字列の周りに一重引用符を追加する必要があります... [そして]文字列に一重引用符がある場合、これはより複雑になります。