2017-04-22 12 views
0

以下のMERGEステートメントで動的SQLテーブル名を使用しようとしていますが、動作しません。動的SQLテーブル名を持つSQL MERGEステートメント

declare @tablename varchar(100) 
declare @sql varchar(max) 

set @tablename = 'studentname' 

set @sql = 'merge ' + @tablename + ' as target 
using #temptable as source 
on (target.student_id = source.class_id) 
when not matched by target then 
insert(student_id, class) 
values(source.student_id, source.class)' 

print @sql 
--exec @sql 

一般的に、それは結果の@sqlを印刷し、それがすべての問題を持っている場合、それをチェックアウトするのに役立つ可能性があり:あなたはこれを試してみました場合は、この作業

declare @TableName varchar(100) 
declare @sql varchar(MAX) 

set @TableName = 'studentName' 

SET @sql = 'MERGE' + @TableName + ' AS h 
USING' + #tempTable + 'AS p 
ON (h.student_ID = p.student_ID) 
WHEN NOT MATCHED BY TARGET 
    THEN INSERT(h.Student_ID, h.Class) VALUES(p.Student_ID, p.Student_ID)' 

execute (@sql) 
+1

「動作していません」とは何ですか?エラーメッセージが表示されましたか? – TriV

答えて

1

これは動作するはずですようにする方法を私に示してくださいする前にそれを実行しようとします。 joinStudentIDClassIDに基づいて実行する必要がありますか? また、両方のフィールドについてStudentIDStudentIDのターゲットテーブルに挿入しています。

+0

あなたは天才rigertaです – CodingSoft

関連する問題