Ich schreibe eine dynamische Einfügeabfrage in einer gespeicherten Prozedur. Ich erhalte die Spaltennamen als Parameter für meine gespeicherte Prozedur.Dynamische SQL Server-Abfrage
Zum Beispiel habe ich eine Employee
Tabelle mit EmployeeId
und EmployeeName
Spalten. Ich muss EMP_
vor jedem Angestelltennamen beim Einfügen der Daten in Department
Tabelle von Employee
Tabelle anfügen.
Nicht dynamische Abfrage sieht so aus.
INSERT INTO Department(EmployeeId, EmployeeName)
SELECT
EmployeeId, 'EMP_' + EmployeeName
FROM
Employee
Wenn ich schreibe einen dynamischen Einsatz
SET @SqlCommand =
'INSERT INTO ' + @DepartmentTable + '(' + @EmployeeIdColumn + ',' + @EmployeeNameColumn + ')' +
'SELECT ' + @EmployeeIdColumn + ',''EMP_''' + @EmployeeNameColumn + '''' +
'FROM ' +
@EmployeeTable + ' WTB '
EXEC sp_executesql
@stmt = @SqlCommand
Die Frage ist, für die EmployeeName
Spalt, wird „EMP_EmployeeName“ anstelle der tatsächlichen Mitarbeiternamen einfügen. Ich habe versucht, Zitate vor und nach EmployeeNameColumn
, aber es hat nicht funktioniert. Wie kann ich es reparieren?
append „EMP“ vor jedem Mitarbeiternamen. @EmployeeNameColumn ist der Spaltenname, den der gespeicherte Proc erhält. – turbo88
Während dies nicht ist und Antwort vor, würde ich Ihnen dringend empfehlen, diesen Blog-Post zu lesen. Ich beziehe mich immer wieder darauf, wenn ich dynamische SQL mache. Es beschreibt viele "Best Practice" -Methoden, um dynamische SQL zu erreichen, die sowohl sicher (parametrisiert) als auch effizient sind. Http://www.sommarskog.se/dynamic_sql.html#good_practices – bUKaneer
@ turbo88 hey! Haben Sie eine der angebotenen Lösungen ausprobiert? – gofr1