IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement SQL Server Discussion :

COUNT ou @@ROWCOUNT


Sujet :

Développement SQL Server

  1. #1
    Membre Expert

    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2007
    Messages
    3 530
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 530
    Par défaut COUNT ou @@ROWCOUNT
    Bonjour

    J'ai créé une fonction pour indiquer l'existence d'une valeur dans une table:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    CREATE FUNCTION [dbo].[CodebarreExiste] (@Codebarre VARCHAR(13))
    RETURNS INT
    AS
      BEGIN
          DECLARE @Result INT
     
          SELECT @Result = Count(*)
          FROM   catalogue
          WHERE  Codebarre = @Codebarre
     
          IF @Result <> 0
            SET @Result = 1
          ELSE
            SET @Result = 0
     
          RETURN @Result
      END
    Je suis bien sur qu'il y a une manière plus courte d'écrire ça.

    De plus, est-ce qu'il ne serait pas plus efficace de faire un simple select sans le count et utiliser @@ROWCOUNT ?

    Qu'est-ce qui est le mieux ? Ou disons, le plus "normalisé" ??

    Papy !

  2. #2
    Membre Expert
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    CREATE FUNCTION [dbo].[CodebarreExiste] (@Codebarre CHAR(13))
    RETURNS BIT
    AS BEGIN
      RETURN (
          SELECT CAST(Count(*) as BIT)
          FROM   catalogue
          WHERE  Codebarre = @Codebarre
      )
     END
    ou bien mieux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    CREATE FUNCTION [dbo].[CodebarreExiste] (@Codebarre CHAR(13))
    RETURNS BIT
    AS BEGIN
      IF EXISTS (SELECT 1 FROM catalogue WHERE  Codebarre = @Codebarre)
          RETURN 1
     
       RETURN 0
     END

    Attention aux performances : n'utilise pas cette fonction dans la partie SELECT d'une requête qui retourne beaucoup de lignes.

  3. #3
    Membre Expert

    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2007
    Messages
    3 530
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 530
    Par défaut
    Impeccable ! Je prends le "IF EXISTS".

    Merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. UNION et COUNT(*)
    Par Goldust dans le forum Langage SQL
    Réponses: 2
    Dernier message: 08/08/2003, 09h30
  2. limiter le résultat retourné par le count
    Par SuperFoustan dans le forum Langage SQL
    Réponses: 8
    Dernier message: 05/08/2003, 12h10
  3. Problème dans requête avec count()
    Par BadFox dans le forum Requêtes
    Réponses: 3
    Dernier message: 08/07/2003, 18h02
  4. Multiple Count
    Par Antichoc dans le forum Langage SQL
    Réponses: 2
    Dernier message: 31/03/2003, 11h19
  5. Compter le nombre ligne listée (COUNT) ?
    Par StouffR dans le forum Langage SQL
    Réponses: 7
    Dernier message: 02/09/2002, 09h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo