Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

SQL dinamico (passando il nome della tabella come parametro)

Bene, in primo luogo hai omesso il '+' dalla tua stringa. Questo modo di fare le cose è tutt'altro che ideale, ma puoi farlo

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

Suggerirei vivamente di ripensare a come farlo, tuttavia. La generazione di SQL dinamico spesso porta a vulnerabilità di SQL Injection e rende più difficile per SQL Server (e altri DB) elaborare il modo migliore per elaborare la query. Se disponi di una procedura memorizzata in grado di restituire qualsiasi tabella, non otterrai praticamente alcun vantaggio dal fatto che sia una procedura memorizzata in primo luogo poiché non sarà in grado di fare molto in termini di ottimizzazioni e sei in gran parte evirare anche i vantaggi in termini di sicurezza.