作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个变量de_sters
,一个字符串类型变量,因为它是在我的SSIS包中定义的,所以它的作用域是SSIS包,我需要fill
对于一个表中多行的值,使用 Execute Sql Task
包。
底线是我有一个“执行Sql任务”包,在属性->“Sql语句”中我写了:
declare @s varchar(max) = ''
select @s = case when @s <> ''
then @s + ',''' + employer_name + ''''
else @s + '''' + employer_name+ ''''
end
from employers
select @s as Result
然后,在Result Set
我选择了Single Row
(首先我运行了我的选择,我看到它只返回一行)。然后在选项卡Result Set
上(左侧)我写在Result Name
领域Result
(我之前的sql语句的别名)并在归档Variable Name
中我写了User::de_sters
.
但是当我运行 sql 任务时它给了我
The type of the value being assigned to variable "User::de_sters"
differs from the current variable type" error.
有什么帮助或提示吗?
最佳答案
问题是 SSIS 无法将 varchar(max)
理解为数据类型。您需要指定 limit
。只需更改 max
> 值为 8000
。
declare @s varchar(8000) = ''
如果您的字符串非常大,请在查询中使用 FullResultSet 和 varchar(max)
,并将值存储在数据类型为 object
的变量中。
现在为了访问对象,请使用脚本任务
或脚本组件
(数据流)并编写以下代码以从对象中提取值
变量
OleDbDataAdapter oleDA = new OleDbDataAdapter();
DataTable dt = new DataTable();
oleDA.Fill(dt, Dts.Variables["User::YourVariable"].Value);
foreach (DataRow rowLoop in dt.Rows)
{
MessageBox.Show (rowLoop[0].ToString());
}
关于sql-server - 分配给变量 "User::de_sters"的值的类型与当前变量类型不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15900818/
我有一个变量de_sters ,一个字符串类型变量,因为它是在我的SSIS包中定义的,所以它的作用域是SSIS包,我需要fill对于一个表中多行的值,使用 Execute Sql Task包。 底线是
我是一名优秀的程序员,十分优秀!