nombre maximal pour une requête SQL

Je veux avoir une variable pour sélectionner les lignes supérieures. Je peux sélectionner les lignes supérieures en fonction d'une variable. Cependant, je veux sélectionner toutes les lignes si la variable n'est pas fournie.

Actuellement j'utilise cette requête:

DECLARE @TOPCOUNT int; SET @TOPCOUNT=10; SELECT TOP(@TOPCOUNT) * FROM TABLE1 

Mettre à jour:

  1. La requête d'origine est très longue et complexe, donc je ne dois pas réécrire la requête entière sans le nombre supérieur dans la clause else.

  2. Je ne veux pas utiliser la requête dynamic à cause de ses répercussions.

Quelque chose comme ça:

 DECLARE @TOPCOUNT int; --SET @TOPCOUNT=10; IF @TOPCOUNT IS NULL SELECT * FROM TABLE1 ELSE SELECT TOP(@TOPCOUNT) * FROM TABLE1 

Ajouté après ci-dessus UPDATE – s'il s'agit d'un paramètre d'une procédure stockée, il suffit de fournir une valeur par défaut pour @TOPCOUNT :

 @TOPCOUNT INT = 2147483647 --max size of INT 

Quelque chose comme ça va aider. Commencez simplement votre @TOPCOUNT avec -1 si vous voulez toutes les lignes.

 IF @TOPCOUNT = -1 BEGIN SELECT * FROM TABLE1 END ELSE BEGIN SELECT TOP(@TOPCOUNT) * FROM TABLE1 END 
 IF @TOPCOUNT IS NULL SET @TOPCOUNT=2147483647