我想知道如何在Sybase 15中执行以下操作。
DECLARE @DEPTH INTSET @DEPTH = 8SELECT TOP @DEPTH * FROM Table它给了我以下错误:错误(102)‘@DEPTH’附近的语法不正确…
有几种选择:
select
set rowcount
execute()
动态查询示例:
declare @depth int, @query varchar(16384)select @depth = 8select @query = ‘select top ‘+convert(varchar,@depth)+’ * from table’execute(@query)go</code>
declare @depth int, @query varchar(16384)select @depth = 8select @query = ‘select top ‘+convert(varchar,@depth)+’ * from table’execute(@query)go
</code>
TOP只接受整数常量,而不是变量。如果您运行的是最新版本(16.0 SP03),则可以使用ROWS LIMIT @v而不是TOP。
正如其他人所提到的,您可以通过动态构建查询来解决TOP @v问题。
答案是:
DECLARE @DEPTH INTSET @DEPTH = 8SET ROWCOUNT @DEPTHSELECT * FROM TableSET ROWCOUNT 0</code>
DECLARE @DEPTH INTSET @DEPTH = 8SET ROWCOUNT @DEPTHSELECT * FROM TableSET ROWCOUNT 0