2010-06-18 34 views

回答

2
Insert into #TempTable 
//Basically do bulk insert into temp table then... 


Update MyTable 
    Set Field1 = tt.Field1, 
     Field2 = tt.Field2, 
     ... 
FROM #TempTable tt 
where primaryKey = tt.PrimaryKey 

請注意這是一種善意的suedo代碼。因此,將fieldx替換爲您的字段名稱,並將primaryKey替換爲表格的主鍵字段名稱或唯一標識符字段名稱。

+0

謝謝.....我會嘗試這一點,並取回到u ..... – nimi 2010-06-18 15:29:22

+0

我試着這和工作正常.... – nimi 2010-06-18 18:10:01

0

更新要求您確定一些外部邏輯。

例如,如果傳入記錄的主鍵已經存在,請更新其他列,否則插入此記錄。

我可能會建議你編寫一些xslt來從輸入的xml流中創建更新語句,然後運行該sql腳本。

+0

是啊...我需要做這樣的事情..如果主鍵存在,我需要更新它,否則我需要插入數據。我所有的是一個包含所有數據的xml。如果PK不存在,我爲該字段添加零。 – nimi 2010-06-18 15:30:56

0

查看OPENXML功能。您的映射也希望將XML數據加載到variable table中,因此您可以像在常規數據庫表格之間那樣輕鬆地加入或組合查詢的其餘部分。

1

SQL Server 2005及更高版本具有對XML數據類型的本機支持,並且還支持用於將XML分解爲關係數據列的XQuery語言。

查看Introduction to XQuery in SQL Server 2005瞭解它是如何工作的。

-1

對於更新表中的值使用

CREATE PROCEDURE UpdEmpd 

    @UpdEmpd xml 
AS 

BEGIN 

    UPDATE HumanResources.EmployeeData 

    SET Salary=3000.00 

    WHERE EmployeeID='E15' 

END 

執行:

Exec UpdEmpd '<Record xmlns:xsi="http://www.w3.org/2012/xmlschema-instance"> 

        <HumanResources.EmployeeData> 

         <Salary>3000.00</Salary> 

         <EmployeeID>E15</EmployeeID> 

        </HumanResources.EmployeeData> 

      </Record>'