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

Ottieni risultati da SQL dinamico nella procedura memorizzata

Hai provato qualcosa del tipo:

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;

Ti consigliamo di assicurarti di anteporre le stringhe nvarchar con N, ad es. SELECT @SQL = N'SELECT ... .

Inoltre, sai che se la query restituisce più righe, il valore che viene assegnato a @FiscalYear è del tutto arbitrario, giusto? Anche se puoi aspettarti un singolo valore da quella tabella, non può far male usare MAX() o TOP 1 ... ORDER BY per garantire che venga sempre assegnato un solo valore prevedibile.