我想知道如何在Sybase 15中执行以下操作。
DECLARE @DEPTH INT
SET @DEPTH = 8
SELECT TOP @DEPTH * FROM Table
它给我以下错误: 错误(102)' @ DEPTH'附近的语法不正确。
我尝试使用TOP(@DEPTH),与sql server相同,但它将其识别为错误。
错误(14216)功能' TOP'未找到。如果这是SQLJ函数或SQL函数,请使用sp_help检查对象是否存在(sp_help可能会产生大量输出)。
谢谢
答案 0 :(得分:2)
答案是:
DECLARE @DEPTH INT
SET @DEPTH = 8
SET ROWCOUNT @DEPTH
SELECT * FROM Table
SET ROWCOUNT 0
答案 1 :(得分:0)
有几种选择:
select
包裹在一对set rowcount
命令中(参见Adam的答案)execute()
运行(请参阅下面的示例)动态查询示例:
declare @depth int, @query varchar(16384)
select @depth = 8
select @query = 'select top '+convert(varchar,@depth)+' * from table'
execute(@query)
go
答案 2 :(得分:0)
TOP只接受整数常量,而不是变量。如果您运行的是最新版本(16.0 SP03),则可以使用ROWS LIMIT @v而不是TOP。
正如其他人所提到的,您可以通过动态构建查询来解决TOP @v问题。