Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Uzyskaj wynik z dynamicznego SQL w procedurze składowanej

Czy próbowałeś czegoś takiego:

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;

Upewnij się, że poprzedzasz ciągi nvarchar znakiem N, np. SELECT @SQL = N'SELECT ... .

Wiesz też, że jeśli zapytanie zwróci wiele wierszy, wartość przypisana do @FiscalYear jest całkowicie arbitralne, prawda? Chociaż możesz oczekiwać pojedynczej wartości z tej tabeli, nie zaszkodzi użyć MAX() lub TOP 1 ... ORDER BY aby upewnić się, że przypisana zostanie tylko jedna, przewidywalna wartość.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. usuń wiersz klucza podstawowego, który jest kluczem obcym innej tabeli

  2. Dlaczego RAND() nie generuje liczb losowych?

  3. Alternatywa dla łączenia kartezjańskiego i krzyżowego

  4. Sprawdź, czy data przypada między datą rozpoczęcia a datą zakończenia poprzedniego wiersza

  5. Masz problem z przechowywaniem UTF-8 w NVarChar w SQL Server 2008