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

Dynamisk SQL (oversætter tabelnavn som parameter)

Nå, for det første har du udeladt '+' fra din streng. Denne måde at gøre tingene på er langt fra ideel, men du kan gøre det

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

Jeg vil dog kraftigt foreslå, at du genovervejer, hvordan du gør dette. Generering af dynamisk SQL fører ofte til SQL Injection-sårbarheder og gør det sværere for SQL Server (og andre DB'er) at finde den bedste måde at behandle din forespørgsel på. Hvis du har en lagret procedure, der kan returnere et hvilket som helst bord, får du stort set ingen fordel af, at det i første omgang er en lagret procedure, da den ikke vil kunne gøre meget i vejen for optimeringer, og du er i vid udstrækning emaskulerer sikkerhedsfordelene også.



  1. SQL Server Indsæt, hvis den ikke findes

  2. ORA-00838

  3. Primære nøgler i SQL Server

  4. Sådan fungerer CHARINDEX()-funktionen i SQL Server (T-SQL)