2013-07-24 48 views
0

錯誤:明確的指揮工作,而其TSQL相當於拋出一個錯誤

Could not find stored procedure '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的命令將正確旋轉每個表格。 (這最終將包括一個嵌套的循環列和另一個嵌套的循環搜索該列中。)

該命令運行沒有變量讓我覺得這是一個範圍問題。我不應該通過將表名列表插入臨時表中並使用Seed 1的主鍵,爲row_id遞增1,然後通過遞增我的@row_id = row_id循環表來解決此問題。

有什麼建議嗎?

+0

也許只是複製/粘貼錯誤,但你缺少了'SELECT'前一個單引號。 –

回答

1

應該exec(@sql),我覺得

+0

+1是的,當我嘗試時,parens似乎是關鍵。 –

+0

這樣做。謝謝你,謝謝你! –