将变量设置为SQL Server中的变量

将变量设置为SQL Server中的变量,sql,sql-server,xml,Sql,Sql Server,Xml,我正在解决一个连我的同事都说不可能解决的问题。我们的数据库中已经有XML,我希望能够从XML中获取单个属性,并将它们设置为要处理的变量。这是我的代码,到目前为止不起作用 declare @MyText varchar(10) declare @MyXML XML set @MyXML = ' <ns0:TestXML xmlns:ns0="http://test.com"> <TestValue>11</TestValue&

我正在解决一个连我的同事都说不可能解决的问题。我们的数据库中已经有XML,我希望能够从XML中获取单个属性,并将它们设置为要处理的变量。这是我的代码,到目前为止不起作用

    declare @MyText varchar(10)

    declare @MyXML XML
    set @MyXML = '
    <ns0:TestXML xmlns:ns0="http://test.com">
    <TestValue>11</TestValue>
    </ns0:TestXML>'


   set @MyText = 
   (
       ;with XMLNAMESPACES ('http://test.com' as ns0)
       set @MyText = 
       (
           select 
               a.bo.value('(/ns0:TestXML2[1]/TestXML3)[1]','INT') as [Number]
           from @MyXML.nodes('ns0:TestXML') a(bo)
       )
   )
任何帮助都将不胜感激,谢谢。另外,如果我对SQL如何处理XML的逻辑完全错误,请毫不犹豫地告诉我

这是怎么回事,它从提供的XML中返回11,这是您想要的,我假设:

declare @MyText varchar(10)

declare @MyXML XML
set @MyXML = '
<ns0:TestXML xmlns:ns0="http://test.com">
<TestValue>11</TestValue>
</ns0:TestXML>'

;with XMLNAMESPACES ('http://test.com' as ns0)
    select @MyText =
        a.bo.value('(/ns0:TestXML)[1]','INT') 
    from @MyXML.nodes('ns0:TestXML') a(bo)

select @MyText as [TheImpossibleValue]

xml是在数据库中键入的吗?