2017-04-22 1 views
0

Ich versuche, einen dynamischen SQL-Tabellenname mit der MERGE-Anweisung unten zu verwenden, aber es funktioniert nicht. Wenn Sie dies versucht haben, bevor zeigen Sie mir, wie diese Arbeit machenSQL MERGE-Anweisung mit dynamischem SQL-Tabellenname

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

Was funktioniert nicht? Haben Sie Fehlermeldungen erhalten? – TriV

Antwort

1

Diese Arbeit sollte:

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 

Im Allgemeinen könnte es helfen, die resultierende @sql und überprüfen Sie es ausdrucken, wenn es irgendwelche Probleme hat , dann versuche es auszuführen. Sind Sie sicher, dass die join basierend auf StudentID und ClassID durchgeführt werden sollte? Sie fügen auch in die Zieltabelle StudentID, StudentID für beide Felder ein.

+0

Du bist ein Genie Rigerta – CodingSoft

Verwandte Themen