次のようなことを試しましたか:
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;
プレ>nvarchar 文字列の前に N を付けるようにしてください。
SELECT @SQL = N'SELECT ...
.また、クエリが複数の行を返す場合、
@FiscalYear
に割り当てられる値もわかっています。 完全に恣意的ですよね?そのテーブルから単一の値を期待するかもしれませんが、MAX()
を使用しても害はありません またはTOP 1 ... ORDER BY
単一の予測可能な値のみが割り当てられるようにします。