Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Dynamisches SQL (Tabellenname als Parameter übergeben)

Nun, erstens haben Sie das '+' aus Ihrer Zeichenfolge weggelassen. Diese Art, Dinge zu tun, ist alles andere als ideal, aber Sie können es tun

DECLARE @SQL varchar(250)
SELECT @SQL = 'SELECT * FROM ' + QuoteName(@Alias)
Exec(@SQL)

Ich würde jedoch dringend empfehlen, zu überdenken, wie Sie dies tun. Das Generieren von dynamischem SQL führt häufig zu SQL-Injection-Schwachstellen und erschwert es SQL Server (und anderen DBs), die beste Methode zur Verarbeitung Ihrer Abfrage zu finden. Wenn Sie eine gespeicherte Prozedur haben, die jede Tabelle zurückgeben kann, haben Sie praktisch keinen Nutzen davon, dass es sich überhaupt um eine gespeicherte Prozedur handelt, da sie nicht viel an Optimierungen leisten kann, und Sie sind es die Sicherheitsvorteile weitgehend zu entkräften.