0

为了简化起见,假设我正在编写这样的程序:

create procedure [dbo].[TestXml]
( @Message xml ) -- Passing this '<Test><TransactionID>4</TransactionID></Test>'
as

declare @TransactionID int;

我现在如何从@Messageinto解析事务 ID 4 @TransactionID

我期待类似的东西

select @TransactionID = msg.prop.value('@TransactionID', 'int')
       from @Message.nodes('Test') as msg(prop);

或者

select @TransactionID = prop.value('@TransactionID', 'int')
       from @Message.nodes('Test') as msg(prop);

但这些似乎都不起作用。

4

3 回答 3

1

试试这个——

DECLARE @XML XML = '<Test><TransactionID>4</TransactionID></Test>'

DECLARE @TransactionID INT

SELECT @TransactionID = t.p.value('.[1]', 'int')
FROM @XML.nodes('Test') t(p)

SELECT @TransactionID
于 2013-05-07T11:42:14.267 回答
0

试试这个 :-

Declare @xml xml = '<Test><TransactionID>4</TransactionID></Test>'

select prop.value('.', 'int')
   from @xml.nodes('Test/TransactionID') as msg(prop); 

结果 :4

于 2013-05-07T11:38:09.647 回答
0

没关系,我想通了。这很好用

select @TransactionID = @Message.value('/Test[1]/TransactionID[1]', 'int')
于 2013-05-07T11:41:15.013 回答