2012-03-14 15 views
0

ストアドプロシージャで宣言された一時変数を使用する必要があります。この変数を使用して値を割り当て、Matched文で関数を実行する必要があります。私はどのように使用できますか?価値がある他の方法はありますか?あなたは、あなたが実際にMERGE以内にその変数を使用することができますMERGEのステートメントの前に変数を宣言する場合SQL Server 2008のMERGEステートメントで一時変数を宣言するにはどうすればよいですか?

DECLARE @MyVariable INT 
SET @MyVariable = 12 
SELECT HouseNumber + @MyVariable as NewHouseNumber FROM MyTable WHERE Id = 1 

答えて

1

これは、SQL Serverのローカル変数を定義する方法でありますステートメント。これは表変数とスカラー変数にリンケージします。私は彼がすべてのINSERT文でこの

MERGE TargetTable as tar 
USING SourceTable as src 
ON tar.SomeID = src.OtherID 

DECLARE @BossId INT 
SET @BossId = (SELECT ID FROM EmployeeTable WHERE [BossID] = src.BossID) 
--Here we take dynamicly an ID from another table 

WHEN NOT MATCHED THEN 
    INSERT (list OF fields, [BossID]) 
    VALUES (list OF values, @BossId) 

WHEN MATCHED THEN 
    UPDATE 
    SET (list OF SET statements); 

のように、この方法は何かを考えるメンター

0

は異なるBossIDを持つことになります。これも可能ですか?そうでない場合 - この方法でレコードを挿入する方法は? SourceTable(私のケースではSPの入力パラメータ)にIDが付いていて、別のタルベとマッピングする必要があるとします。助言がありますか?

私の投稿は、元の質問にもっと似ています。