gpt4 book ai didi

sql-server - 分配给变量 "User::de_sters"的值的类型与当前变量类型不同

转载 作者:行者123 更新时间:2023-12-02 18:56:19 25 4
gpt4 key购买 nike

我有一个变量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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com