XML数据类型方法的参数2"值"必须是字符串文字

时间:2016-03-07 20:42:50

标签: xml tsql xpath

30多年来,我一直是一名多语言开发人员。由于其声明性质,我对tsql限制越来越感到沮丧。目前,我有一个函数,它返回一个数据类型作为varchar(n),并尝试将此数据类型作为字符串传递给xml值方法第二个参数作为参数(注意以前的帖子是为< strong>第一个参数,我尝试了 sql:variable(&#34; @ DatTyp&#34;))。我认为MS没有理由以这种方式实现查询方法。这是我的测试代码存根:

    DECLARE @xmlHandle      int
    exec sp_xml_preparedocument @xmlHandle OUTPUT, @xmlTableSchema

    Set @DatTyp = [GlobalCnlyCentralizedMedicaids].[dbo].[fnGetDataTypeFromXML]('EmailTo', @xmlHandle)

    -- this line produces the error in the title of this question
    set @emailRec = @xmlTableData.value('(/TableData/TableRow/@EmailTo)[1]',@DatTyp)

    EXEC sp_xml_removedocument @xmlHandle

任何想法都将不胜感激。非常感谢提前!

1 个答案:

答案 0 :(得分:0)

这是因为XML实际上并不存储为XML,而是更易于索引。尝试EXEC使其表现出来。

DECLARE @sql NVARCHAR(8000) = '
DECLARE @xmlHandle      int
exec sp_xml_preparedocument @xmlHandle OUTPUT, @xmlTableSchema

Set @DatTyp = [GlobalCnlyCentralizedMedicaids].[dbo].[fnGetDataTypeFromXML]('EmailTo', @xmlHandle)

set @emailRec = @xmlTableData.value(''(/TableData/TableRow/@EmailTo)[1]'',' + @DatTyp + ')

EXEC sp_xml_removedocument @xmlHandle'
EXEC (@sql)
相关问题