Bạn đã thử một cái gì đó như:
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;
Bạn sẽ muốn đảm bảo rằng bạn đặt tiền tố chuỗi nvarchar bằng N, ví dụ:SELECT @SQL = N'SELECT ...
.
Ngoài ra, bạn biết rằng nếu truy vấn trả về nhiều hàng, giá trị sẽ được gán cho @FiscalYear
là hoàn toàn tùy tiện, phải không? Mặc dù bạn có thể mong đợi một giá trị duy nhất từ bảng đó, nhưng bạn không thể sử dụng MAX()
hoặc TOP 1 ... ORDER BY
để đảm bảo rằng chỉ một giá trị duy nhất, có thể dự đoán được từng được chỉ định.