Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在SQLServer2008中使用存储过程用xml数据更新sql表_Sql_Sql Server_Xml_Stored Procedures - Fatal编程技术网

如何在SQLServer2008中使用存储过程用xml数据更新sql表

如何在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 ) 下

我的桌子看起来像

语言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 )
下面是我拥有的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更新到表中。这将插入新项。。它不会更新现有的文件\更新功能只挂起。你能帮助我更新是什么意思?其中一列不应是可更新的。。或者可以同时更新这两列吗?