【发布时间】:2016-07-27 01:04:36
【问题描述】:
我希望使用 XML 参数字符串通过单个调用填充 SQL 表。
我构建 XML 的代码如下:
遍历列表
' update string for reserved character (ampersand)
Dim descStr As String = allMarkets(0).result(j).event.name.Replace("&", "&&")
(NOTE : the ampersand reference text shown is not displaying correctly in this browser, where I put the correct string reference it is displaying incorrectly)
strBuffer.Append(" <ID>""" & allMarkets(0).result(j).event.id.ToString & """ </ID><DESC>""" & descStr & """</DESC>")
Next
我的存储过程:
ALTER PROC [dbo].[PriceDataXMLEVENTInsert1]
(@ValidXMLInput XML)
AS
BEGIN
INSERT INTO PRICEDATA (EventID, EventDesc)
SELECT
x.v.value('@ID', 'INT'),
x.v.value('@DESC', 'nvarchar(50)')
FROM
@ValidXMLInput.nodes('//ROOT/ROW') x(v)
传递给函数的 XML 字符串包含有效数据并且代码运行良好......但是当表中应该有几百条记录时 PRICEDATA - 没有......上面有什么问题...?
提前感谢您提供的任何帮助...
G
【问题讨论】:
-
你能给我们提供传递给存储过程的实际字符串吗?
-
我确实尝试过.. 但是因为它是 XML 本身,当我之前尝试发布时它显示不正确,它是一个长字符串,所以这里是它的一部分...
"27748379" "Garbarnia v KS Spartakus Daleszyce" "27748239" "H Petach Tikva Youth v H Rishon Lezion Youth" . .... -
如果我只是插入一个带有 XML 字符串的单个值来匹配.. this .... ALTER PROC [dbo].[PriceDataXMLEVENTInsert](@ValidXMLInput XML) AS BEGIN INSERT INTO PRICEDATA(EventID) SELECT Col.value('@ID','INT') FROM @ValidXMLInput.nodes('//Events/Event') Tab(Col) END 工作正常...
-
你能把完整的字符串放在 Pastebin 上吗?
-
您尝试将数据作为属性查询(使用
@ID),但您使用数据作为元素(<ID>value</ID>)构建 XML。当你把你的价值观放在"标志中时,你会变得更糟......
标签: sql sql-server xml tsql parameter-passing