1

我想要一个用于选择顶行的变量。我可以根据变量选择顶行。但是,如果未提供变量,我想选择所有行。

目前我正在使用这个查询:

DECLARE @TOPCOUNT int;
SET @TOPCOUNT=10;

SELECT TOP(@TOPCOUNT) * FROM TABLE1

更新:

  1. 原始查询非常冗长和复杂,所以我不会在 else 子句中没有 top count 的情况下重写整个查询。

  2. 我不想使用动态查询,因为它会产生影响。

4

3 回答 3

2

像这样的东西:

DECLARE @TOPCOUNT int;
--SET @TOPCOUNT=10;

IF @TOPCOUNT IS NULL
    SELECT * FROM TABLE1
ELSE
    SELECT TOP(@TOPCOUNT) * FROM TABLE1

在上述更新之后添加 - 如果这是存储过程的参数,则只需为以下内容提供默认值@TOPCOUNT

@TOPCOUNT INT = 2147483647 --max size of INT
于 2012-05-22T10:39:56.460 回答
0

这样的事情会有所帮助。如果您想要所有行,只需使用 -1 初始化您的 @TOPCOUNT。

IF @TOPCOUNT = -1 BEGIN
  SELECT * FROM TABLE1
END
ELSE BEGIN
  SELECT TOP(@TOPCOUNT) * FROM TABLE1
END
于 2012-05-22T10:38:37.407 回答
0
IF @TOPCOUNT IS NULL SET @TOPCOUNT=2147483647
于 2012-05-22T10:38:44.317 回答