我对XML很陌生。
我使用JavaScript和Ajax从表单中传递4个值作为XML字符串,并将SQL Server 2012传递给存储过程。
我的JS(相关部分):
var title = $('#title').val();
var summary = $('#summary').val();
var post = $('#details').val();
var departmentID = $('#departmentID').val();
var xmlMain = '<root><title>' + title + '</title><summary>' + summary + '</summary><post>' + post + '</post><departmentID>' + departmentID + '</departmentID></root>';
我的SQL(相关部分 - 参数@xmlMain定义为XML):
INSERT INTO RC_Posts
(
title,
summary,
post,
departmentID
)
OUTPUT inserted.postID INTO @temp(insertRef)
SELECT (
SELECT ParamValues.title.value('.','nvarchar(100)')
FROM @xmlMain.nodes('/root/title') as ParamValues(title)
),
(
SELECT ParamValues.summary.value('.','nvarchar(500)')
FROM @xmlMain.nodes('/root/summary') as ParamValues(summary)
),
(
SELECT ParamValues.post.value('.','nvarchar(max)')
FROM @xmlMain.nodes('/root/post') as ParamValues(post)
),
(
SELECT ParamValues.departmentID.value('.','int')
FROM @xmlMain.nodes('/root/departmentID') as ParamValues(departmentID)
)
我的主要问题是:
'.'
?注意: 我的常规JS,Ajax和SQL之前只是传递标准的nvarchar / int值,但我现在需要将它们作为XML传递以保留某些特殊字符等。
答案 0 :(得分:3)
您可以使用单个Xml Nodes()
功能从XML
像这样更改插入
INSERT INTO RC_Posts
(title,summary,post,departmentID)
OUTPUT inserted.postID
INTO @temp(insertRef)
SELECT [Xml_Tab].[Cols].value('(title)[1]', 'varchar(50)'),
[Xml_Tab].[Cols].value('(summary)[1]', 'varchar(50)'),
[Xml_Tab].[Cols].value('(post)[1]', 'varchar(50)'),
[Xml_Tab].[Cols].value('(departmentID)[1]', 'varchar(50)')
FROM @xml.nodes('/root')AS [Xml_Tab]([Cols])
示例:强>
DECLARE @xml XML ='<root>
<title> XML Demo </title>
<summary> Working of Xml Nodes </summary>
<post> Developer </post>
<departmentID> CS </departmentID>
</root>'
SELECT title=[Xml_Tab].[Cols].value('(title)[1]', 'varchar(50)'),
summary=[Xml_Tab].[Cols].value('(summary)[1]', 'varchar(50)'),
post=[Xml_Tab].[Cols].value('(post)[1]', 'varchar(50)'),
departmentID=[Xml_Tab].[Cols].value('(departmentID)[1]', 'varchar(50)')
FROM @xml.nodes('/root')AS [Xml_Tab]([Cols])
输出
title summary post departmentID
-------- -------------------- --------- ------------
XML Demo Working of Xml Nodes Developer CS