我想要一个用于选择顶行的变量。我可以根据变量选择顶行。但是,如果未提供变量,我想选择所有行。
目前我正在使用此查询:
DECLARE @TOPCOUNT int;
SET @TOPCOUNT=10;
SELECT TOP(@TOPCOUNT) * FROM TABLE1
更新
原始查询非常冗长且复杂,因此我不会在没有else子句中的top count的情况下重写整个查询。
由于其影响,我不想使用动态查询。
答案 0 :(得分:2)
这样的事情:
DECLARE @TOPCOUNT int;
--SET @TOPCOUNT=10;
IF @TOPCOUNT IS NULL
SELECT * FROM TABLE1
ELSE
SELECT TOP(@TOPCOUNT) * FROM TABLE1
在UPDATE之后添加 - 如果这是存储过程的参数,那么只提供@TOPCOUNT
的默认值:
@TOPCOUNT INT = 2147483647 --max size of INT
答案 1 :(得分:0)
这样的事情会有所帮助。如果你想要所有行,只需用-1初始化你的@TOPCOUNT。
IF @TOPCOUNT = -1 BEGIN
SELECT * FROM TABLE1
END
ELSE BEGIN
SELECT TOP(@TOPCOUNT) * FROM TABLE1
END
答案 2 :(得分:0)
IF @TOPCOUNT IS NULL SET @TOPCOUNT=2147483647