Wie Tabelle set name dynamisches SQL Abfrage?

Möchte ich Tabelle set name in einer dynamischen SQL-Abfrage. Ich versuchte erfolgreich die parameter wie folgt:

/* 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

Nun möchte ich TABLE NAME dynamisch mit einem parameter, aber ich habe versäumt, das zu tun. Bitte führe mich.

Können Sie nicht parametrieren, so der name der Tabelle. Sie tun es einfach manuell in der SET @SQLQuery Schritt.
eigentlich kann man sich pas der name der Tabelle als string und die Verwendung von exec, der string name(Sie Verhalten sich genau wie eine Prozedur)
Und trotzdem sind Sie nicht liefern kann der name der Tabelle als parameter sp_executesql dies kann nur erreicht werden, mit einer substitution in den string. Diese sind SEHR unterschiedlich. Die Parametrierung ermöglicht die überprüfung von Typ, Schutz vor SQL-Injection-Angriffe, Ausführungsplan wiederverwenden, etc. Ersetzen von Zeichenfolgen in andere Zeichenfolgen tut keiner, und so ist nicht Parametrierung.
eigentlich brauchen Sie nicht die "sp_executesql" - Befehl in mssql 2008+ es ist genug, nur zu nennen, die in dieser Weise: exec @ myqueryconcatenatedvariablewithtablename und Sie bekam Ihre Antwort, bezüglich Injektionen - vielleicht hast du Recht(jemand mit Fähigkeiten, die Sie brechen kann). So hängt davon ab, wo er brauchen, um diese zu verwenden, nachdem alle...
Das ist genau der gleiche Mechanismus - Sie sind nur ersetzen Sie der name der Tabelle in Ihren string und dann die Ausführung des resultierenden Strings. An keinem Punkt in deinem Beispiel ist der name der Tabelle ein parameter.

InformationsquelleAutor Neo | 2013-12-19

Schreibe einen Kommentar