ユーザーテーブルを持つデータベースがあります。すべてのユーザーを csv ファイルで更新したい。SqlBulkCopy を使用して csv ファイルを一時テーブルにインポートしました。
次のステップは、一時テーブルを使用してユーザー テーブルを更新するストアド プロシージャを作成することです。これまでのところ、私はこれを持っています:
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) のようです。それはおそらく、これが機能しない理由を説明しています....
みんな、ありがとう!