显式命令有效,而其 TSQL 等效项引发错误
Posted
技术标签:
【中文标题】显式命令有效,而其 TSQL 等效项引发错误【英文标题】:Explicit command work, while its TSQL equivalent throws an error 【发布时间】:2013-07-24 18:30:22 【问题描述】:错误:
找不到存储过程 '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 循环遍历表?
有什么建议吗?
【问题讨论】:
可能只是复制/粘贴错误,但您在SELECT
之前缺少单引号。
【参考方案1】:
我想应该是exec(@sql)
【讨论】:
做到了。谢谢你,chue x!以上是关于显式命令有效,而其 TSQL 等效项引发错误的主要内容,如果未能解决你的问题,请参考以下文章