DB2 CLI 是否支持 SQL 中需要从 bash 脚本执行的参数标记 [AIX]

Does DB2 CLI support parameters markers in SQL that needs to be executed from a bash script [AIX]

db2 -xdb2 -f filename.sql 选项是否支持使用参数标记?我正在从 bash 脚本调用 SQL 语句。到目前为止我找不到任何选项,我想我必须在 bash 中使用字符串连接并将 SQL 传递给 db2 -x,这看起来不太整洁。

DB2 CLP 不支持使用参数标记。

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

$ v=4
$ db2 "select count(*) from syscat.tables where card = ${v}"

因为这只是使用 shell 替换,所以您需要处理在字符串周围添加单引号 (... where tabschema = '${tabschema}' ...),如果您的字符串有单引号,这会变得更加复杂。

您也可以在 shell 脚本循环中使用此方法:

#!/bin/ksh

db2 connect to sample

for v in 1 2 3 4 5 ; do
    db2 "insert into t1 (c1) values (${v})"
done

db2 terminate

如果您尝试使用参数标记来避免每次执行时都重新编译 SQL 语句,这将无济于事,但是如果您正在寻找它,您可能需要考虑将 perl 与DBI、ruby/ibm_db 等