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

Obtenha o resultado do SQL dinâmico no procedimento armazenado


Você tentou algo como:
DECLARE @FiscalYear INT, @DataSource NVARCHAR(25), @SQL NVARCHAR(250);
SET @DataSource = N'CustomerCosts20120328';
SET @SQL = N'SELECT DISTINCT @FiscalYear = FiscalYear FROM ' + @DataSource;
EXEC sp_executesql @SQL, N'@FiscalYear INT OUTPUT', @FiscalYear OUTPUT;

PRINT @FiscalYear;

Você vai querer certificar-se de prefixar as strings nvarchar com N, por exemplo SELECT @SQL = N'SELECT ... .

Além disso, você sabe que, se a consulta retornar várias linhas, o valor atribuído a @FiscalYear é completamente arbitrário, certo? Embora você possa esperar um único valor dessa tabela, não faz mal usar MAX() ou TOP 1 ... ORDER BY para garantir que apenas um valor único e previsível seja atribuído.