我正在尝试使用 OLE DB 命令在 SSIS 中执行此更新:
UPDATE
TABLE_A
SET
COLUMN_C = CONCAT(?,' ',?)
FROM
TABLE_A INNER JOIN TABLE_B ON
TABLE_A.ID = TABLE_B.ID
但是当我尝试映射参数时,我收到了这条消息:
“无法推断参数类型,因为单个表达式包含两个未类型化的参数”
我不知道我是否对这个查询做错了什么,或者是否不可能在一个句子中使用多个参数。
我正在使用 VS 2010
最佳答案
与 SQL Server 2012 及更高版本的参数绑定(bind)
SQL Server 2012 及更高版本更改了 SQL 解析器或优化器,以使用更严格的方法来确定未知参数输入类型。
这会导致 SQL 语句,例如“WHERE col1 >= ? + ?”失败并出现错误,例如 mx.ODBC.Error.ProgrammingError: ('42000', 11503, "[Microsoft][ODBC Driver 11 for SQL Server][SQL Server]The parameter type cannot be deduced because a single expression contains无类型参数,“@P1”和“@P2”。”,10191)。
一个解决方案
- 使用显式转换告诉 SQL 解析器期望从右侧操作得到哪种类型,例如“WHERE col1 >= ? + CAST(? as int)”。这为第二个参数提供了显式类型,并允许解析器推断结果的类型,
关于sql - 在 SSIS 中使用 OLE DB 命令的查询中的多个参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28907316/