我有一个@MyXMLString
参数以下列格式传递给存储过程:
DECLARE @MyXMLString XML
SET @MyXMLString =
'<data formID="2">
<UnAssigned AcctTypeID="1"/><UnAssigned AcctTypeID="2"/>
</data>'
在存储过程中,我必须检索formID
和AcctTypeID
的值,然后更新表。
现在只有一个formID
,我可以检索
DECLARE @formID int
SET @formID = @MyXMLString.value('(data/@formID)[1]','int')
但可以有一个或多个AcctTypeID
,即'<UnAssigned AcctTypeID="1"/>'
中的一个或多个。我需要帮助来弄清楚如何检索它。
答案 0 :(得分:1)
您可以像这样获取AcctTypeID
的所有实例:
SELECT
XC.value('@AcctTypeID', 'int')
FROM
@MyXMLString.nodes('/data/UnAssigned') AS XT(XC)
执行此操作时,结果如下:
答案 1 :(得分:0)
这应该有效:
DECLARE @MyXMLString XML
SET @MyXMLString =
'<data formID="2">
<UnAssigned AcctTypeID="1"/><UnAssigned AcctTypeID="2"/>
</data>'
SELECT X.value('../@formID', 'int') FormID, X.value('@AcctTypeID', 'int') AcctTypeID
FROM @MyXMLString.nodes('data/UnAssigned') T(X)
<强>结果强>
FormID AcctTypeID
----------- -----------
2 1
2 2