Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

SQL dynamique (en passant le nom de la table en paramètre)

Eh bien, tout d'abord, vous avez omis le '+' de votre chaîne. Cette façon de faire est loin d'être idéale, mais vous pouvez le faire

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

Je suggère fortement de repenser la façon dont vous faites cela, cependant. La génération de SQL dynamique entraîne souvent des vulnérabilités d'injection SQL et rend plus difficile pour SQL Server (et d'autres bases de données) de trouver la meilleure façon de traiter votre requête. Si vous avez une procédure stockée qui peut renvoyer n'importe quelle table, vous n'en tirez pratiquement aucun avantage car elle ne pourra pas faire grand-chose en termes d'optimisations, et vous êtes émasculant également en grande partie les avantages de la sécurité.