sql >> Base de Datos >  >> RDS >> Sqlserver

SQL dinámico (pasando el nombre de la tabla como parámetro)

Bueno, primero has omitido el '+' de tu cadena. Esta forma de hacer las cosas está lejos de ser la ideal, pero puedes hacerlo

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

Sin embargo, te sugiero encarecidamente que reconsideres cómo haces esto. La generación de SQL dinámico a menudo conduce a vulnerabilidades de inyección de SQL y dificulta que SQL Server (y otras bases de datos) encuentren la mejor manera de procesar su consulta. Si tiene un procedimiento almacenado que puede devolver cualquier tabla, realmente no obtiene prácticamente ningún beneficio de que sea un procedimiento almacenado en primer lugar, ya que no podrá hacer mucho en cuanto a optimizaciones, y usted está castrando en gran medida los beneficios de seguridad también.