如何在SQLServer2008中使用存储过程用xml数据更新sql表
我的桌子看起来像 语言ID 下面是insert查询如何在SQLServer2008中使用存储过程用xml数据更新sql表,sql,sql-server,xml,stored-procedures,Sql,Sql Server,Xml,Stored Procedures,我的桌子看起来像 语言ID 下面是insert查询 INSERT INTO [dbo].[HOSPITAL_SPOKEN_LANGUAGE] (HOSPITAL ID, LANGUAGE ID)SELECT hospitalid,LanguageId FROM OPENXML(@XmlHandleLANGUAGE,'/ArrayOfSpokenLanuageInfo/SpokenLanuageInfo',2) WITH ( LanguageId INT,hospitalid INT ) 下
INSERT INTO [dbo].[HOSPITAL_SPOKEN_LANGUAGE]
(HOSPITAL ID, LANGUAGE ID)SELECT hospitalid,LanguageId
FROM OPENXML(@XmlHandleLANGUAGE,'/ArrayOfSpokenLanuageInfo/SpokenLanuageInfo',2)
WITH ( LanguageId INT,hospitalid INT )
下面是我拥有的XML
<?xml version="1.0"?> <ArrayOfSpokenLanuageInfo
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <SpokenLanuageInfo>
<LanguageId>8</LanguageId>
<hospitalid>19</hospitalid> </SpokenLanuageInfo> <SpokenLanuageInfo>
<LanguageId>13</LanguageId>
<hospitalid>19</hospitalid> </SpokenLanuageInfo> <SpokenLanuageInfo>
<LanguageId>26</LanguageId>
<hospitalid>2</hospitalid> </SpokenLanuageInfo> <SpokenLanuageInfo>
<LanguageId>52</LanguageId>
<hospitalid>2</hospitalid> </SpokenLanuageInfo> </ArrayOfSpokenLanuageInfo>
我想从XML向表中插入新项,现有项从XML更新表 试试这个
IF OBJECT_ID('tempdb..#t') IS NOT NULL
DROP TABLE #temp
DECLARE @xml xml
Set @xml= N'
<ArrayOfSpokenLanuageInfo>
<SpokenLanuageInfo>
<LanguageId>8</LanguageId>
<hospitalid>19</hospitalid>
</SpokenLanuageInfo>
<SpokenLanuageInfo>
<LanguageId>13</LanguageId>
<hospitalid>19</hospitalid>
</SpokenLanuageInfo>
</ArrayOfSpokenLanuageInfo>'
SELECT
doc.col.value('LanguageId[1]', 'nvarchar(100)') LanguageId
,doc.col.value('hospitalid[1]', 'nvarchar(100)') hospitalid into #t
FROM @xml.nodes('/ArrayOfSpokenLanuageInfo/SpokenLanuageInfo') doc(col)
insert into [dbo].[HOSPITAL_SPOKEN_LANGUAGE] ([LANGUAGE ID],[HOSPITAL ID]) (select * from #t)
试试这个
IF OBJECT_ID('tempdb..#t') IS NOT NULL
DROP TABLE #temp
DECLARE @xml xml
Set @xml= N'
<ArrayOfSpokenLanuageInfo>
<SpokenLanuageInfo>
<LanguageId>8</LanguageId>
<hospitalid>19</hospitalid>
</SpokenLanuageInfo>
<SpokenLanuageInfo>
<LanguageId>13</LanguageId>
<hospitalid>19</hospitalid>
</SpokenLanuageInfo>
</ArrayOfSpokenLanuageInfo>'
SELECT
doc.col.value('LanguageId[1]', 'nvarchar(100)') LanguageId
,doc.col.value('hospitalid[1]', 'nvarchar(100)') hospitalid into #t
FROM @xml.nodes('/ArrayOfSpokenLanuageInfo/SpokenLanuageInfo') doc(col)
insert into [dbo].[HOSPITAL_SPOKEN_LANGUAGE] ([LANGUAGE ID],[HOSPITAL ID]) (select * from #t)
你真的应该编辑你的文章:使用格式,添加更具体的标签,对你的问题更加精确。。。这样你不会得到任何回应…你真的应该编辑你的帖子:使用格式,添加更具体的标签,对你的问题更加精确。。。这样您将不会得到任何响应…别担心,它会将数据插入到您的表HOSPITAL\u Speaked\u Language我想从XML向表中插入新项,现有项应该从XML更新到表中。这将插入新项。。它不会更新现有的文件\更新功能只挂起。你能帮助我更新是什么意思?其中一列不应是可更新的。。或者可以同时更新这两列吗?别担心,它会将数据插入表HOSPITAL\u Speaked\u Language我想从XML向表中插入新项,现有项应该从XML更新到表中。这将插入新项。。它不会更新现有的文件\更新功能只挂起。你能帮助我更新是什么意思?其中一列不应是可更新的。。或者可以同时更新这两列吗?