begin process at 2012 05 25 12:04:13
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Procédure

 > SQL SERVER - LES DIFFÉRENTES MÉTHODES POUR FAIRE UN LIMIT SOUS SQL SERVER

SQL SERVER - LES DIFFÉRENTES MÉTHODES POUR FAIRE UN LIMIT SOUS SQL SERVER


 Information sur la source

Note :
8 / 10 - par 3 personnes
8,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Procédure Classé sous :limit, top Niveau :Initié Date de création :12/01/2006 Date de mise à jour :12/01/2006 13:53:06 Vu :5 823

Auteur : fabrice69

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (2)
Ajouter un commentaire et/ou une note


 Description

Tout le monde connait bien le TOP sous SQL Server, mais il possède un problème, car il est difficilement utilisable dans une procédure stockée ou le nombre de résultats doit être variable.
Voila donc une vision de quelques solutions existantes.

Source

  • DECLARE @Limit AS INT
  • SET @Limit = 3
  • ---------------------------------------------
  • -- Activation de la limite RowCount
  • SET ROWCOUNT @Limit
  • ---------------------------------------------
  • -- Requette utilisant la limite fixée
  • SELECT
  • *
  • FROM
  • dbo.Employees
  • ORDER BY
  • LastName;
  • ---------------------------------------------
  • -- Malgré le TOP fixé à 7, c'est le ROWCount qui est prioritaire
  • SELECT
  • TOP 7 *
  • FROM
  • dbo.Employees
  • ORDER BY
  • LastName;
  • ---------------------------------------------
  • -- Annulation de la limite
  • SET ROWCOUNT 0
  • ---------------------------------------------
  • -- Selection avec un TOP pour controler que la limite ne soit plus gérée
  • SELECT
  • TOP 7 *
  • FROM
  • dbo.Employees
  • ORDER BY
  • LastName;
  • ---------------------------------------------
  • -- Pour utiliser le paramètre de la limite dans un TOP
  • DECLARE @SQL AS VARCHAR(8000)
  • SET @SQL = 'SELECT TOP '+ CONVERT(VARCHAR(5), @Limit) +' * FROM dbo.Employees ORDER BY LastName';
  • EXECUTE (@SQL);
  • ---------------------------------------------
DECLARE @Limit 	AS INT
SET @Limit =	3

---------------------------------------------
-- Activation de la limite RowCount
SET ROWCOUNT 	@Limit

---------------------------------------------
-- Requette utilisant la limite fixée
SELECT 
	*
FROM
	dbo.Employees
ORDER BY
	LastName;

---------------------------------------------
-- Malgré le TOP fixé à 7, c'est le ROWCount qui est prioritaire
SELECT 
	TOP 7	*
FROM
	dbo.Employees
ORDER BY
	LastName;

---------------------------------------------
-- Annulation de la limite
SET ROWCOUNT 0

---------------------------------------------
-- Selection avec un TOP pour controler que la limite ne soit plus gérée
SELECT 
	TOP 7	*
FROM
	dbo.Employees
ORDER BY
	LastName;

---------------------------------------------
-- Pour utiliser le paramètre de la limite dans un TOP
DECLARE @SQL	AS VARCHAR(8000)

SET @SQL = 'SELECT TOP '+ CONVERT(VARCHAR(5), @Limit) +' * FROM dbo.Employees ORDER BY LastName';

EXECUTE (@SQL);
---------------------------------------------

 Conclusion

Bon coding

Romelard Fabrice


 Historique

12 janvier 2006 13:53:07 :
.

 Sources du même auteur

SQL SERVER - OBTENIR LES VALEURS CORRESPONDANT A DES UNICODE
SQL SERVER 2000 - VIDER ET COMPACTER TOUTES LES BASES DE DON...
SQL SERVER 2005 : OBTENIR LA LISTE DES BASES DE CONTENU D'UN...
SQL SERVER - OBTENIR LA POSITION DU PREMIER CHIFFRE D'UNE CH...
SQL SERVER - UPDATE D'UNE TABLE EN BOUCLE PAR LOT

 Sources de la même categorie

IMPORTATION DE FICHIER TEXT (CSV) RAPIDEMENT par vladam
Source avec une capture T-SQL - SPLIT SANS TABLE TEMPORAIRE par TheOnlyMaX
Source avec Zip (SQL SERVER) REQUÊTE POUR RECHERCHER UN {GUID} DANS TOUS LES... par lassaad83
[ORACLE]DÉTERMINER LA DATE DU PREMIER JOUR D'UNE SEMAINE PAR... par Bouillou2
T-SQL - PROCÉDURE - STOCKÉE - PLACER DANS UNE TABLE LE RÉSUL... par zavier666

 Sources en rapport avec celle ci

SQL SERVER - UPDATE D'UNE TABLE EN BOUCLE PAR LOT par fabrice69
SQL SERVER - SELECTION DES PREMIERS 10 POURCENT D'UNE TABLE par fabrice69
RENVOYER LES 10 PREMIÈRE LIGNES SUR TOUTES LES COLONNES D'UN... par Benouille

Commentaires et avis

Commentaire de jimmy69 le 20/01/2006 18:25:03

Salut salut Fab,

tu peux pas savoir comme ton code aurait pu m'aider l'an passe ! J'ai galere un max sur un projet php + Ms sql serveur 2000 !

Pour arriver a faire la fonction limit de mysql sous microsoft j'ai suivi cet exemple mais avant d'y arriver je galerais !

http://www.devparadise.com/technoweb/code/sql/a453.php

Merci pour tes nombreuses sources ...

A bientot ...
Christophe

Commentaire de khaledkaa le 19/01/2010 16:39:58 6/10

Merci pour c sources

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Mélange Sql ORDER BY et LIMIT [ par nemingway ] Bonjour, je trie une table selon deux paramètres (auteur, puis id). Est-il possible d'appliquer un LIMIT à chacun de ces tris, cad SELECT . Passer un paramètre au TOP dans une procedure stocké [ par gazza ] Pour ceux qui comme moi ou eu des problèmes avec le TOP @variable voici un peu d'aide ---------------------------------------------------------- Faire des blocs de ligne [ par ehmarc ] Salut,Voila j'ai encor un soucis....Je doit faire des group de 15000 ligne de donnée (ma table à 90 000 lignes)Sous SQL server c'est pas top (à cause Select paginé [ par thiosyiasar ] Bonjour a tous,Pour une page aspx, je voudrais faire un select paginé du genre : SELECT TOP (@nb_ligne) * FROM newsletter WHERE nlt_id in(  SELECT nlt SQL CE, top, join [ par gzitoun ] Bonjour,je decouvre SQL CE.Pourriez vous svp me confirmer un point: il me semble que TOP (select top 5 * par exemple) ne marche pas, est ce vrai?Qu en Requete qui ne renvoie pas ce que je veux [ par raph37 ] Salut tlm !Voilà j'ais un petit souci avec ma requette SQL textuelement , je voudrais faire une selection complete de ma table , puis la trier par ID TOP multiple en une seule requête... [ par soobook ] Bonjour,Cette question a peut-être déjà été posée, mais je n'ai pas trouvé, donc...Je souhaite créer une requête qui me renvoie chaque semaine le top programmation pl/sql [ par perle00 ] salut tt le mondej'ai besoin de votre aide pour résoudre cet exercice.1.créer la table TOP_DOGS afin d'y stocker les employés et leur salaire.2.créer Sql Serveur 2000 - Utilisateur de SELECT TOP avec un paramètre dans une procédure [ par FPatrick ] Bonjour, Dans une procédure stockée, je souhaiterais mettre en paramètre le SELECT TOP pour ensuite faire un traitement derrière. Exemple CREATE PR


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,889 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales