sql >> Base de Datos >  >> RDS >> Sqlserver

Obtenga el resultado de SQL dinámico en el procedimiento almacenado

¿Intentaste 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;

Querrá asegurarse de prefijar las cadenas nvarchar con N, p. SELECT @SQL = N'SELECT ... .

Además, sabe que si la consulta devuelve varias filas, el valor que se asigna a @FiscalYear es completamente arbitrario, ¿verdad? Si bien puede esperar un solo valor de esa tabla, no está de más usar MAX() o TOP 1 ... ORDER BY para garantizar que solo se asigne un único valor predecible.