【发布时间】:2020-09-23 17:35:44
【问题描述】:
我有一个带有字符串数据类型变量的 SSIS 包。
我有一个带有 XML 字段的表,我正在尝试从该字段中获取数据并填充我的变量。我尝试了很多方法:
1.-
SELECT ISNULL(STUFF((
SELECT ',' + wrk.CustomFieldsXML.value('(/values/MatterUNO)[1]', 'VARCHAR(MAX)') AS [text()]
FROM Work wrk
WHERE ISNULL(wrk.CustomFieldsXml.value('(values/ReleaseSecureMattertoFoundation)[1]', 'varchar(5)'), 'false') = 'true'
FOR XML path('')), 1, 1, ''), '') AS 'RESULT'
2.-
DECLARE @RESULT VARCHAR(MAX)
SELECT @RESULT = ISNULL(STUFF((
SELECT ',' + wrk.CustomFieldsXML.value('(/values/MatterUNO)[1]', 'VARCHAR(MAX)') AS [text()]
FROM Work wrk
WHERE ISNULL(wrk.CustomFieldsXml.value('(values/ReleaseSecureMattertoFoundation)[1]', 'varchar(5)'), 'false') = 'true'
FOR XML path('')), 1, 1, ''), '')
SELECT ISNULL(@RESULT, '') AS 'RESULT'
3.-
SELECT wrk.CustomFieldsXML.value('(/values/MatterUNO)[1]', 'VARCHAR(MAX)') AS 'RESULT'
FROM Work wrk
WHERE ISNULL(wrk.CustomFieldsXml.value('(values/ReleaseSecureMattertoFoundation)[1]', 'varchar(5)'), 'false') = 'true'
4.-
SELECT (SELECT TOP 1 ISNULL(wrk.CustomFieldsXML.value('(/values/MatterUNO)[1]', 'VARCHAR(MAX)'), '')
FROM Work wrk
WHERE ISNULL(wrk.CustomFieldsXml.value('(values/ReleaseSecureMattertoFoundation)[1]', 'varchar(5)'), 'false') = 'true') AS 'RESULT'
这些都会导致 2 个错误:
- 值类型(_ComObject)只能转换为Object类型的变量。
- 分配给变量的值的类型 (DBNull) 与当前类型 (String) 不同。
当我将 SQL 更改为:SELECT '988776' AS 'RESULT' 变量分配工作正常。
有谁知道这是否是使用 XML 列的限制? 有人可以帮忙吗?
谢谢 抢
【问题讨论】:
标签: ssis