我想将xml数据保存到sp中的表中,作为字符串传递,这是我的代码
alter PROCEDURE usp_be_insertXML
-- Add the parameters for the stored procedure here
@xml varchar(1000)
AS
BEGIN
DECLARE @idoc int
DECLARE @doc varchar(1000)
SET NOCOUNT ON;
EXEC sp_xml_preparedocument @idoc OUTPUT, @xml
BEGIN TRY
INSERT INTO testing ([Name] ,[Fname] )
SELECT Column1,Column2
FROM OPENXML (@idoc, 'NewDataSet/Sheet1', 1)
WITH ([Column1] [nvarchar](50),
[Column2] [nvarchar](50))
END TRY
BEGIN CATCH
END CATCH
EXECUTE sp_xml_removedocument @idoc
END
这只在表中插入NULL,有什么帮助吗? 这是XML
<NewDataSet>
<Sheet1>
<Column1>Name</Column1>
<Column2>Fname</Column2>
</Sheet1>
<Sheet1>
<Column1>khan</Column1>
<Column2>dd</Column2>
</Sheet1>
<Sheet1>
<Column1>mytest</Column1>
<Column2>ff</Column2>
</Sheet1>
</NewDataSet>
答案 0 :(得分:0)
问题是您指定使用“以属性为中心”的映射(OPENXML的最后一个参数中的“1”),但您的数据元素实际上是元素。您可以通过以下两种方式获得所需结果:
1)将参数更改为“2” 2)更改您的WITH子句以显式声明您正在寻找的子元素:
WITH (
[Column1] [nvarchar](50) 'Column1'
, [Column2] [nvarchar](50) 'Column2'
)