[英]Table Merge with sql server 2008
我有一個有用的數據庫。 我想用csv文件更新所有用戶。 我使用SqlBulkCopy將我的csv文件導入臨時表。
我的下一步是創建一個使用臨時表更新我的users表的存儲過程。 到目前為止我有這個:
USE [Userdata]
GO
/****** Object: StoredProcedure [dbo].[aml_UserImport] Script Date: 03/06/2013 14:11:44 ******/
SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER OFF
GO
-- =============================================
-- Author: michiel reyers
-- Create date: 07-01-2013
-- Description:
-- =============================================
CREATE PROCEDURE [dbo].[aml_UserImport2]
AS
SET NOCOUNT ON;
MERGE users
USING temp_users ON temp_users.ID = users.ID
WHEN MATCHED
THEN UPDATE SET users.typeId = temp_users.typeId,
users.Name = temp_users.Name,
users.active = 1
WHEN NOT MATCHED BY SOURCE
THEN UPDATE SET users.active = 0
WHEN NOT MATCHED BY TARGET
THEN Insert (ID,typeID,Name,active)
VALUES (temp_users.ID,temp_users.typeId,temp_users.Name,1)
;
當我嘗試執行此操作時,我收到錯誤:
消息102,級別15,狀態1,過程aml_UserImport2,行13'MERGE'附近的語法不正確。
我究竟做錯了什么?
我添加了半號,但仍然沒有運氣:-(
更新:
我做了一次復查,而且我正在使用MS SQL Server Management 2008 R2。 似乎我的數據庫具有兼容性級別SQL Server 2005(90)。 這可能解釋了為什么這不起作用....
感謝大家!
放一個; 合並后。
MERGE語句需要使用分號(;)作為語句終止符。 在沒有終結符的情況下運行MERGE語句時引發錯誤10713。(來自MSDN)
我的建議是:
在使用SQL Server的Merge語句中,您需要以;
分號
在這里檢查語法 MSDN
MERGE users
USING temp_users ON temp_users.ID = users.ID
WHEN MATCHED
THEN UPDATE SET users.typeId = temp_users.typeId,
users.Name = temp_users.Name,
users.active = 1
WHEN NOT MATCHED BY SOURCE
THEN UPDATE SET users.active = 0
WHEN NOT MATCHED BY TARGET
THEN Insert (ID,typeID,Name,active)
VALUES (temp_users.ID,temp_users.typeId,temp_users.Name,1);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.