エラー:
ストアド プロシージャ 'SELECT TOP 1 name FROM (SELECT TOP 5 name FROM sys.tables ORDER BY name DESC) as t ORDER BY name ASC' が見つかりませんでした。
コード:
WHILE (@interval <= @max)
BEGIN
SET @SQL = 'SELECT TOP 1 name FROM (' +
SELECT TOP ' + convert(varchar(10), @interval) +
' name FROM sys.tables ORDER BY name DESC) as t ORDER BY name ASC'
EXEC @SQL
SELECT @interval = @interval + 1
END
次のコマンドを単独で実行すると、適切に機能します。
SELECT TOP 1 name
FROM
(SELECT TOP 5 name
FROM sys.tables
ORDER BY name DESC) as t
ORDER BY
name ASC
内側の TOP # を手動でインクリメントし、TSQL を使用せずにコマンドを実行すると、各テーブルが適切にローテーションされます。(これには最終的に、列のネストされたループと、その列内の検索のための別のネストされたループが含まれます。)
変数なしでコマンドを実行すると、これはスコープの問題だと思います。テーブル名のリストをシード 1 の主キー、row_id のインクリメント 1 で一時テーブルに挿入し、@row_id = row_id をインクリメントしてテーブルをループすることで、これを解決できないでしょうか?
助言がありますか?