Ich möchte Tabellenname in einer dynamischen SQL-Abfrage festlegen. Ich habe versucht, erfolgreich für die Parameter wie folgt:Wie legt man den Tabellennamen in der dynamischen SQL-Abfrage fest?
/* Using sp_executesql */
/* Build and Execute a Transact-SQL String with a single parameter
value Using sp_executesql Command */
/* Variable Declaration */
DECLARE @EmpID AS SMALLINT
DECLARE @SQLQuery AS NVARCHAR(500)
DECLARE @ParameterDefinition AS NVARCHAR(100)
/* set the parameter value */
SET @EmpID = 1001
/* Build Transact-SQL String by including the parameter */
SET @SQLQuery = 'SELECT * FROM tblEmployees WHERE EmployeeID = @EmpID'
/* Specify Parameter Format */
SET @ParameterDefinition = '@EmpID SMALLINT'
/* Execute Transact-SQL String */
EXECUTE sp_executesql @SQLQuery, @ParameterDefinition, @EmpID
Jetzt mag ich TABLE NAME
dynamisch über einen Parameter nehmen, aber ich habe nicht nachgewiesen, dass zu tun. Bitte führen Sie mich.
Sie können den Tabellennamen nicht parametrisieren. Sie tun es einfach * manuell * im Schritt 'SET @ SQLQuery'. – MatBailie
@MatBailie tatsächlich können Sie den Tabellennamen als String verwenden und Exec des String-Namen verwenden (es verhält sich genau wie eine Prozedur) – HellBaby
@hellbaby - Und immer noch können Sie den Tabellennamen nicht als * Parameter * zu liefern 'sp_executesql', kann dies nur durch eine Substitution in die Zeichenkette erreicht werden. Diese sind sehr unterschiedlich. Die Parametrisierung ermöglicht Typprüfung, Schutz vor SQL-Injection-Attacken, Wiederverwendung von Ausführungsplänen usw. Das Ersetzen von Strings durch andere Strings tut dies nicht und das ist auch eine * nicht * -Parametrisierung. – MatBailie