我想要一个用于选择顶行的变量。我可以根据变量选择顶行。但是,如果未提供变量,我想选择所有行。
目前我正在使用这个查询:
DECLARE @TOPCOUNT int;
SET @TOPCOUNT=10;
SELECT TOP(@TOPCOUNT) * FROM TABLE1
更新:
原始查询非常冗长和复杂,所以我不会在 else 子句中没有 top count 的情况下重写整个查询。
我不想使用动态查询,因为它会产生影响。
我想要一个用于选择顶行的变量。我可以根据变量选择顶行。但是,如果未提供变量,我想选择所有行。
目前我正在使用这个查询:
DECLARE @TOPCOUNT int;
SET @TOPCOUNT=10;
SELECT TOP(@TOPCOUNT) * FROM TABLE1
更新:
原始查询非常冗长和复杂,所以我不会在 else 子句中没有 top count 的情况下重写整个查询。
我不想使用动态查询,因为它会产生影响。
像这样的东西:
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
这样的事情会有所帮助。如果您想要所有行,只需使用 -1 初始化您的 @TOPCOUNT。
IF @TOPCOUNT = -1 BEGIN
SELECT * FROM TABLE1
END
ELSE BEGIN
SELECT TOP(@TOPCOUNT) * FROM TABLE1
END
IF @TOPCOUNT IS NULL SET @TOPCOUNT=2147483647