在Sybase SELECT TOP X中创建动态查询


敢嫁就敢娶
2025-03-14 09:18:55 (17天前)


我想知道如何在Sybase 15中执行以下操作。

DECLARE @DEPTH INT
SET @DEPTH = 8
SELECT TOP @DEPTH * FROM Table
它给了我以下错误:
错误(102)‘@DEPTH’附近的语法不正确…

4 条回复
  1. 0# 别烦我 | 2019-08-31 10-32



    有几种选择:




    • 包裹着

      select

      在一对

      set rowcount

      命令(参见Adam的答案)


    • 构建一个动态查询并通过它运行它

      execute()

      (见下面的例子)



    动态查询示例:




    1. declare @depth int, @query varchar(16384)
      select @depth = 8
      select @query = select top ‘+convert(varchar,@depth)+’ * from table
      execute(@query)
      go

    2. </code>

  2. 1# 青年@ | 2019-08-31 10-32



    TOP只接受整数常量,而不是变量。如果您运行的是最新版本(16.0 SP03),则可以使用ROWS LIMIT @v而不是TOP。



    正如其他人所提到的,您可以通过动态构建查询来解决TOP @v问题。


  3. 2# 独奏♪ | 2019-08-31 10-32



    答案是:




    1. DECLARE @DEPTH INT
      SET @DEPTH = 8
      SET ROWCOUNT @DEPTH
      SELECT * FROM Table
      SET ROWCOUNT 0

    2. </code>

登录 后才能参与评论