以下の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)
「動作していません」とは何ですか?エラーメッセージが表示されましたか? – TriV