我正在使用SQL Server 2014和SSIS设计师SSDT BI和Sisual studio 2013.我在执行SQL任务中有以下查询,其中单个结果集将值分配给变量" role"字符串数据类型。
SELECT DISTINCT (STUFF((SELECT CAST(',' + SubTableUser.UserRole AS VARCHAR(MAX))
FROM TableUser AS SubTableUser
WHERE SubTableUser.UserID = TableUser.UserID
FOR XML PATH('')), 1, 1, '')) AS UserRole
FROM TableUser
执行SQL任务错误:
值类型(__ComObject)只能转换为Object类型的变量。 将值赋给变量" role"时出现错误:"分配给变量的值的类型(DBNull) "用户角色::"与当前变量类型(String)不同。变量在执行期间可能不会更改类型。 变量类型是严格的,除了Object类型的变量。"。
我尝试将对象变量值分配给脚本任务String.Format("{0}", Dts.Variables["User::role"])
中的字符串变量并获取此值" System .__ ComObject & #34;而不是实际值。
答案 0 :(得分:0)
您创建的对象类型的变量设置为datatable,因为查询返回一组行。从脚本任务中读取它作为数据表。并将您想要的值分配给字符串变量
或者将Top替换为Top 1,以便它返回一行,并且可以将其分配给字符串(每个变量只有一列)