从 unix shell 脚本在 db2 SQL 中传递参数

从 unix shell 脚本在 db2 SQL 中传递参数

我想根据我对 unix shell 脚本的输入值从表中删除某些行。我正在 shell 脚本中建立连接并终止它。

如果您现在注意到该字段已硬编码在 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 不支持使用参数标记。

但是,当您以非交互方式(即从 shell)运行 db2 时,您可以替换 shell 变量:

这应该会给你留下类似的东西:

#!/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"

但重要的是要记住......

...这只是使用 shell 替换,您需要处理在字符串周围添加单引号...[并且]如果您的字符串有单引号,这会变得更加复杂。

相关内容