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

Langage SQL Discussion :

[debutant] procedures stockees : ordre de renvoi des donnees


Sujet :

Langage SQL

  1. #1
    Membre régulier Avatar de bmayer
    Inscrit en
    Décembre 2003
    Messages
    150
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 150
    Points : 77
    Points
    77
    Par défaut [debutant] procedures stockees : ordre de renvoi des donnees
    Bonjour,

    Je decouvre les procedures stockees, et me heurte a une difficulte, sans doute due a mon inexperience.

    Dans la procedure, un jeu de donnes est realise (ex. select * from table)
    Et la seulement, on peut connaitre le nombre de lignes de ce jeu de donnees. Mais comment renvoyer en premier ce nombre de ligne, puis ensuite le jeu de donnees ?

    Merci d'avance, une personne bloquee sur ce point incontournable.

  2. #2
    Membre actif
    Avatar de MashiMaro
    Profil pro
    Inscrit en
    Février 2003
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 180
    Points : 213
    Points
    213
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    create procedure COUNT_TABLE as
    -- comptage
    select count(*) from table
    -- selection
    select * from table
    go
    Variante avec le comptage en paramètre de sortie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    create procedure COUNT_TABLE 
       @nb_enreg int OUT
    as
    -- comptage
    select @nb_enreg=count(*) from table
    -- selection
    select * from table
    go
    Si cela ne te va pas, pourrais-tu être plus précis dans ta demande ?
    MashiMaro

    L'homme sage apprend de ses erreurs, l'homme très sage apprend des erreurs des autres.

  3. #3
    Membre régulier Avatar de bmayer
    Inscrit en
    Décembre 2003
    Messages
    150
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 150
    Points : 77
    Points
    77
    Par défaut
    Citation Envoyé par MashiMaro
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    create procedure COUNT_TABLE as
    -- comptage
    select count(*) from table
    -- selection
    select * from table
    go
    Si cela ne te va pas, pourrais-tu être plus précis dans ta demande ?
    C'est ce que je fais(ait) jusqu'a maintenant. Le pb est que cette fois la requete balaie 3 champs de 3 tables, dont 2 sont de type text (gros), avec dans le where des clause like or like or like.
    Bref, quelque chose de couteux.
    J'aurai aimer faire quelque chose de + light que 2 requetes lourdes et, au count() pres, presque identiques.
    Ainsi, la base utilisee possede une variable @rowcount, nombre de records retournes. Il serait sympa de "stocker" le resultat de la requete dans un "conteneur" adapte, de faire un select @rowcount, puis un select @conteneur.

  4. #4
    Membre actif
    Avatar de MashiMaro
    Profil pro
    Inscrit en
    Février 2003
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 180
    Points : 213
    Points
    213
    Par défaut
    dans ce cas, si tu ne veux faire qu'une seule fois la requête lourde, je te conseille d'utiliser les tables temporaires.

    La syntaxe des tables temporaires peuvent varier en fonction du SGBD. Celle que je vais te proposer est la syntaxe utilisée par Sybase qui est ainsi : #nomtable

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    create procedure COUNT_TABLE as 
    -- selection
    select *
    into #table_tmp
    from table
    where ... like ...
    or ... like...
    or ... like ...
    -- comptage 
    select count(*) from #table_tmp
    -- affichage 
    select * from #table_tmp
    go
    MashiMaro

    L'homme sage apprend de ses erreurs, l'homme très sage apprend des erreurs des autres.

  5. #5
    Membre régulier Avatar de bmayer
    Inscrit en
    Décembre 2003
    Messages
    150
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 150
    Points : 77
    Points
    77
    Par défaut
    Citation Envoyé par MashiMaro
    dans ce cas, si tu ne veux faire qu'une seule fois la requête lourde, je te conseille d'utiliser les tables temporaires.
    Yes !

  6. #6
    Membre actif
    Avatar de MashiMaro
    Profil pro
    Inscrit en
    Février 2003
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 180
    Points : 213
    Points
    213
    Par défaut
    Citation Envoyé par bmayer
    Citation Envoyé par MashiMaro
    dans ce cas, si tu ne veux faire qu'une seule fois la requête lourde, je te conseille d'utiliser les tables temporaires.
    Yes !
    Aussi une derniere remarque sur les tables temporaires, pas besoin du DELETE à la fin, car lorsque la procedure stockée se termine, elle disparait automatiquement.
    MashiMaro

    L'homme sage apprend de ses erreurs, l'homme très sage apprend des erreurs des autres.

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

Discussions similaires

  1. [debutant] procedure stockee
    Par christophebmx dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 01/04/2005, 12h04
  2. [debutant]procedure stockee et date !
    Par christophebmx dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 01/02/2005, 09h55
  3. [DEBUTANT]procedure stockee
    Par christophebmx dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 03/12/2004, 16h01
  4. [Debutant]procedure stockee ds un fichier texte
    Par christophebmx dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 07/06/2004, 15h03
  5. [Debutant]Procedure stockee sous MSDE
    Par christophebmx dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 08/04/2004, 10h39

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