sql - 在 SSIS 中使用 OLE DB 命令的查询中的多个参数

标签 sql visual-studio-2010 parameters ssis task

我正在尝试使用 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)。

一个解决方案

  1. 使用显式转换告诉 SQL 解析器期望从右侧操作得到哪种类型,例如“WHERE col1 >= ? + CAST(? as int)”。这为第二个参数提供了显式类型,并允许解析器推断结果的类型,

关于sql - 在 SSIS 中使用 OLE DB 命令的查询中的多个参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28907316/

相关文章:

mysql - 图表数据的 SQL 查询帮助

c# - Visual Studio 扩展 : Editing code files in the current solution?

c# - 如果值等于或大于,WPF 触发器将起作用

python - 排序的关键参数是如何工作的?

python - SQLite 跨具有重复分组行的多列进行 SELECT 查询

sql - ruby on rails 参数比较日期和日期时间?

sql - SQL的reStructuredText?

visual-studio - 如何在 Visual Studio 中针对每个解决方案指定源代码管理插件?

javascript - 如何从JavaScript中的查询字符串URL中提取get参数

.htaccess - Htaccess 使用参数在子文件夹中重写