0

错误:

找不到存储过程“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 的情况下运行命令将正确地轮换每个表。(这最终将包括一个用于 Column 的嵌套循环,以及另一个用于在该列中进行搜索的嵌套循环。)

该命令在没有变量的情况下运行让我认为这是一个范围问题。我不应该通过将表名列表插入到临时表中来解决这个问题吗?主键为种子 1,为 row_id 递增 1,然后通过递增我的 @row_id = row_id 循环遍历表?

有什么建议么?

4

1 回答 1

1

应该是exec(@sql)的,我想

于 2013-07-24T18:34:23.000 回答