gpt4 book ai didi

sql - 如何使用存储过程选择 xml 元素属性?

转载 作者:行者123 更新时间:2023-12-02 22:21:26 25 4
gpt4 key购买 nike

好的,我现在有存储过程的这段代码。

ALTER PROC [dbo].[Readxml]
@xmlparam XML
AS
BEGIN
SET NOCOUNT ON
DECLARE @CustomerXml AS XML
SET @CustomerXml = @xmlparam

INSERT INTO Custtable.dbo.SPCustomer
(
CustomerId,
CustomerName
)
SELECT
Customer.attribute.value('CustomerId[1]', 'nvarchar(255)') AS CustomerId,
Customer.attribute.value('Name[1]', 'nvarchar(255)') AS CustomerName
FROM
@xmlparam.nodes('Customers/Customer') AS Customer(attribute)
END

我的 XML 看起来像这样(简化)。

<Customers>
<Customer CustomerId="94" Name="name1" />
<Customer CustomerId="95" Name="name2" />
<Customer CustomerId="96" Name="name3" />
</Customers>

现在我的代码无法获取属性值,据我所知,我正在尝试获取 <Customer> 中的元素。标记,称为 CustomerIdName , 那是不存在的。

当从表中选择所有行时,完成该过程后,我得到了所有行,但具有 NULL 值。

我的问题是,如何从 XML 中获取属性?

提前致谢!

最佳答案

你需要这个:

SELECT 
Customer.attribute.value('@CustomerId', 'nvarchar(255)') AS CustomerId,
Customer.attribute.value('@Name', 'nvarchar(255)') AS CustomerName
FROM
@xmlparam.nodes('Customers/Customer') AS Customer(attribute)

要获取属性,请使用前导@

关于sql - 如何使用存储过程选择 xml 元素属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13672624/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com