Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

SQL dinâmico (passando o nome da tabela como parâmetro)


Bem, primeiro você omitiu o '+' da sua string. Esta maneira de fazer as coisas está longe de ser ideal, mas você pode fazer
DECLARE @SQL varchar(250)
SELECT @SQL = 'SELECT * FROM ' + QuoteName(@Alias)
Exec(@SQL)

Eu sugiro fortemente repensar como você faz isso, no entanto. A geração de SQL dinâmico geralmente leva a vulnerabilidades de injeção de SQL, além de tornar mais difícil para o SQL Server (e outros bancos de dados) descobrir a melhor maneira de processar sua consulta. Se você tem um procedimento armazenado que pode retornar qualquer tabela, você realmente não está obtendo praticamente nenhum benefício por ser um procedimento armazenado em primeiro lugar, pois não poderá fazer muito em termos de otimizações, e você está emasculando em grande parte os benefícios de segurança também.