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

问题描述:

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

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

但是,当您正在运行的DB2非交互(即从壳),您也可以替换的shell变量:只是使用shell替代

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

正因为如此,你需要处理添加单引号围绕着你的字符串(... where tabschema = '${tabschema}' ...),如果你的字符串有单引号,这变得更加复杂。

您也可以使用shell脚本这个方法的循环:如果你想使用参数标记,以避免每次它执行时重新编译SQL语句

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

这不会帮助,但如果你重新寻找你可能想要考虑使用perl和DBI,ruby/ibm_db等。