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

Obtenir le résultat de SQL dynamique dans une procédure stockée

Avez-vous essayé quelque chose comme :

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;

Vous voudrez vous assurer de préfixer les chaînes nvarchar avec N, par ex. SELECT @SQL = N'SELECT ... .

De plus, vous savez que si la requête renvoie plusieurs lignes, la valeur attribuée à @FiscalYear est complètement arbitraire, non? Bien que vous puissiez vous attendre à une seule valeur de cette table, cela ne peut pas faire de mal d'utiliser MAX() ou TOP 1 ... ORDER BY pour s'assurer qu'une seule valeur prévisible est attribuée.