Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Ergebnis aus dynamischem SQL in gespeicherter Prozedur abrufen

Haben Sie versucht, etwas wie:

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;

Stellen Sie sicher, dass Sie nvarchar-Strings ein N voranstellen, z. SELECT @SQL = N'SELECT ... .

Außerdem wissen Sie, dass, wenn die Abfrage mehrere Zeilen zurückgibt, der Wert @FiscalYear zugewiesen wird ist völlig willkürlich, oder? Während Sie vielleicht einen einzelnen Wert aus dieser Tabelle erwarten, kann es nicht schaden, MAX() zu verwenden oder TOP 1 ... ORDER BY um sicherzustellen, dass immer nur ein einziger vorhersehbarer Wert zugewiesen wird.