如何使用 ODBC 将多个命名参数传递给 DB2 数据库
Posted
技术标签:
【中文标题】如何使用 ODBC 将多个命名参数传递给 DB2 数据库【英文标题】:How can I pass multiple named parameters using ODBC to a DB2 database 【发布时间】:2013-08-26 08:59:59 【问题描述】:我必须使用现有的 ODBC 连接查询 DB2 数据库。执行简单查询按预期工作,但一旦我尝试执行参数化查询,它就不起作用:
SELECT
ColumnA,
ColumnB
FROM
MyTable
WHERE
ColumnA = ? AND
ColumnB = ?
在其他帖子中建议使用?
,但我总是得到空结果(虽然没有错误消息)。当我尝试使用命名参数的标准 SQL 方式时(并将 SQL 语句更改为ColumnA = @ColumnA AND ColumnB = @ColumnB
,如下所示
odbcCommand.Parameters.AddWithValue( ColumnA", 1234 );
odbcCommand.Parameters.AddWithValue( ColumnB", 9999);
显示以下错误消息:
System.Data.Odbc.OdbcException:错误 [42S22] [IBM][CLI 驱动程序][DB2] SQL0206N “@ColumnA”在使用它的上下文中无效。 SQLSTATE=42703...
改用odbcCommand.Parameters.Add( new OdbcParameter( "ColumnA", Integer ) Value = 1234 );
表明这已被弃用(并且也不起作用)。我想避免使用串联的 SQL 语句,但我找不到一种方法来让参数化查询对 DB2 数据库起作用。
【问题讨论】:
【参考方案1】:您没有提及您的 DB2 版本。在 DB2 9.7 和更高版本中,有一个 driver parameter DB2NETNamedParam
来控制这种行为。检查您的db2cli.ini
文件。
我怀疑早期版本可能不支持命名参数。
【讨论】:
感谢您的建议,我回去工作会尝试检查版本。 确实似乎是版本问题,虽然花了一段时间才发现并解决它。以上是关于如何使用 ODBC 将多个命名参数传递给 DB2 数据库的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Terraform local-exec 将命名参数传递给 powershell 脚本?