gpt4 book ai didi

mysql - 使用存储过程将XML中的Html数据保存到sql

转载 作者:行者123 更新时间:2023-11-28 23:30:08 25 4
gpt4 key购买 nike

这是我从前端传递到存储过程的表的 Xml 数据。

<ArrayOfUserData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<UserData>
<Name>Dovyan<Name />
<id>434556464<id />
</UserData>
<UserData>
<Name>Alex<Name />
<id>12345767<id />
</UserData>
</ArrayOfUserData>

这是我作为@in_params 传递给存储过程的上述 xml。这是存储过程。

USE [DATABASE]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


ALTER PROCEDURE [DATABASE].[sp_SaveUsertable]

(
@in_params AS XML
)
AS

BEGIN
select
T.x.value('./Name[1]','varchar(6)') as [Name] ,
T.x.value('./id[1]','varchar(75)') as [id]

into #Temp
from @in_params.nodes('/ArrayOfUserData/UserData') as T(x);


BEGIN TRANSACTION

INSERT INTO [dbo].[usertable](Name,id)
SELECT Name,id FROM #Temp AS T

COMMIT TRANSACTION
drop table #Temp;

END

有人可以告诉我我可能做错了什么吗?数据未保存在数据库表中。

最佳答案

您的查询是正确的,但您的 XML 数据格式不正确,NameID 的结束标记是自闭合标记,即使您有开始标记和间的数据。它们需要是正确的关闭标签,而不是自关闭标签。见下文:

<ArrayOfUserData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<UserData>
<Name>Dovyan<Name /> --<-- This closing tag should be </Name>
<id>434556464<id /> --<-- This closing tag should be </id>
</UserData>
<UserData>
<Name>Alex<Name /> --<-- This closing tag should be </Name>
<id>12345767<id /> --<-- This closing tag should be </Name>
</UserData>
</ArrayOfUserData>

如果您修复了 XML,您的存储过程应该可以工作。但是我要在你的程序中改变的一件事是使用临时表,这是不需要的,只需简单地从你的 xml 参数插入到表中。有点像……

BEGIN TRANSACTION

INSERT INTO [dbo].[usertable](Name,id)
select
T.x.value('./Name[1]','varchar(6)') as [Name]
,T.x.value('./id[1]','varchar(75)') as [id]
from @Xml.nodes('/ArrayOfUserData/UserData') as T(x);

COMMIT TRANSACTION

关于mysql - 使用存储过程将XML中的Html数据保存到sql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37623516/

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