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

SQL Firebird Discussion :

retourner dans un tableau et lire tous le enregistrement -Procedure Stockée -


Sujet :

SQL Firebird

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    218
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 218
    Points : 91
    Points
    91
    Par défaut retourner dans un tableau et lire tous le enregistrement -Procedure Stockée -
    Bonjour
    je voudrais retourner sous forme de procedure stockée
    un requête sql

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     select NOM 
    FROM ARTICLES
    INTO NOM_ART;
    J'ai plusieurs enregistrements et je voudrais pas surcharger le reseau
    histoire de retourner le tout en un seule foi et programmer propre

    Comment faire ceci pour retourner sous forme d'un tableau

    de quel nature dois être mon paramètre de sortie (tableau ?)


    Je me pose la même question ou les champs de ma table
    sont de diverse nature(string int....)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     select * 
    FROM ARTICLES
    INTO NOM_ART;
    Je vous remercie par avance de vos conseil et aide
    Outils utilisés : FireBird 2.1 - IbExert Free - C++ Builder 6 Pro Update 4- Windows Xp pro Sp3

  2. #2
    Membre expert

    Homme Profil pro
    Consultant spécialité Firebird
    Inscrit en
    Mai 2002
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Consultant spécialité Firebird
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 342
    Points : 3 712
    Points
    3 712
    Par défaut
    c'est quoi l'intérêt ?
    que cherches tu ?
    Philippe Makowski
    IBPhoenix - Firebird
    Membre de l'April

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    218
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 218
    Points : 91
    Points
    91
    Par défaut
    Bonsoir ,
    je voudrais retourner le jeu d'enregistrements
    en un seule fois.
    Outils utilisés : FireBird 2.1 - IbExert Free - C++ Builder 6 Pro Update 4- Windows Xp pro Sp3

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    A moins que je me trompe je ne vois pas l'intérêt d'une procédure stockée pour un select de ce genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     SELECT NOM FROM ARTICLES
    suffi largement de toute façon pour l'ensemble de données renvoyées par la procedure il faudra faire la même chose

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     SELECT NOM_ART FROM PROC_ARTICLES
    l'intérêt est donc null . Ou alors ton objectif est mal expliqué

    De plus :
    J'ai plusieurs enregistrements et je voudrais pas surcharger le reseau
    histoire de retourner le tout en un seule fois et programmer propre
    récupérer tous les enregistrements en une seule fois c'est ça qui va surcharger le réseau (surtout s'il y a des milliers d'articles)
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    218
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 218
    Points : 91
    Points
    91
    Par défaut
    Je teste firebird et je debute
    Je veux un procédure qui me liste tous les article et me retourne cela sous forme de tableau ou paramètre de sortie sans avoir a chaque fois appeler
    la requete .J'ai 20 enregistrement

    J'ai écris ceci est ce correct ?

    Comment tester si un requete ne retourne aucun enregistrement dans
    cette même procédure

    Est le type tableau existe dans firebird 1.5 ?

    J'espère avoir été plus clair

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    SET TERM ^ ;
     
    CREATE OR ALTER PROCEDURE LISTERARTICLES 
    returns (
        id integer,
        nom varchar(80),
        prix integer,
        stockactuel integer,
        stockminimun integer)
    as
    begin
     
      /* Procedure qui liste TOUS les articles
      ID,NOM,PRIX,STOCKACTUEL,STOCKMINIMUN
      et les retourne
      en un tableau
      */
     
     FOR   /*   debut de boucle */
     
     
        SELECT ID,NOM,PRIX,STOCKACTUEL,STOCKMINIMUN
        FROM ARTICLES
        INTO ID,NOM,prix, stockactuel,stockminimun
     
     DO   /* fin de boucle */
     
     BEGIN
         SUSPEND;     /* bloc d'instruction ou on libere la main */
     END
     
     
     
    end^
     
    SET TERM ; ^
     
    GRANT SELECT ON ARTICLES TO PROCEDURE LISTERARTICLES;
     
    GRANT EXECUTE ON PROCEDURE LISTERARTICLES TO SYSDBA;
    J'ai un autre question
    je voudrais récupérer cela dans C++Builder 6 avec le composant DBgrid
    comment dois je procéder ?

    Encore merci
    Outils utilisés : FireBird 2.1 - IbExert Free - C++ Builder 6 Pro Update 4- Windows Xp pro Sp3

  6. #6
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    la procédure me semble correcte mais
    encore une fois

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
       SELECT ID,NOM,PRIX,STOCKACTUEL,STOCKMINIMUN
        FROM ARTICLES
    fait la même chose. Maintenant je ne maitrise pas assez C++ 6 pour dire comment faire

    ce que je sait par contre c'est que si je pose un ,disons, SQLQuery avec le code indiqué et je l'ouvre via un Open et non un ExecSQL j'obtiens le tableau demandé
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    218
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 218
    Points : 91
    Points
    91
    Par défaut
    Bonjour j'ai teste le code dans ce dernier post
    j'ai un erreur de compilation de la requete sql

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    SET TERM ^ ;
     
    CREATE OR ALTER PROCEDURE NEW_PROCEDURE 
    as
    begin
      /* Procedure Text */
     
      SELECT ID,NOM,PRIX,STOCKACTUEL,STOCKMINIMUN
        FROM ARTICLES ;
     
      --suspend;
    end^
     
    SET TERM ; ^
    J'ai un message d'erreur et ne vois d'où il viens

    J'ai enlevé /ajouter le ";" avec toujours le même message d'erreur
    a un caractère prés

    .
    Invalid token.
    Dynamic SQL Error.
    SQL error code = -104.
    Token unknown - line 7, char 19.
    ;.



    Par contre si j'enlève la boucle j'ai une message d'erreur d'execution
    "multirow in singleton select" je pense que cela viens de plusieurs enregistrement.Je suis oblige de garder ma boucle

    Merci encore d'aider un debutant
    Outils utilisés : FireBird 2.1 - IbExert Free - C++ Builder 6 Pro Update 4- Windows Xp pro Sp3

  8. #8
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    je me suis mal explique il faut croire !

    La première procédure indiquée était correcte !!! à priori

    ce que je voulais dire c'est que faire une procédure pour un simple select ne sert à rien autant directement faire le select seul .

    En effet pour obtenir les résultats de la procédure stockée il faudra faire quelque chose du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT * FROM LISTERARTICLES
     
    // ce qui pour moi est la même chose que
     
    SELECT ID,NOM,PRIX,STOCKACTUEL,STOCKMINIMUN  FROM ARTICLES
    en fait le problème que tu as n'est pas un problème Firebird sensu stricto mais de son utilisation dans un programme C++ Builder 6 en l'occurence.

    ce que je peux dire c'est qu'avec delphi (donc pratiquement la même chose) moi , sur une form je pose un composant de connection, un composant SQL contenant la requête précedemment cité, un datasource lié à la requête , un composant DBGrid lié au datasource et à la suite d'un Open du dit composant SQL j'ai les résultats (tous les enregistrements) .

    Donc avec un peu de modifications cela doit pouvoir se faire avec C++ Builder (que je n'ai pas ).
    Ta question serait donc mieux placée dans le forum C++
    Et je maintient qu'il n'y a pas besoin de procédure stockée pour ça !!
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

Discussions similaires

  1. Retourner dans une page de recherche "tous"
    Par guidav dans le forum Evolutions du club
    Réponses: 3
    Dernier message: 20/02/2008, 14h21
  2. Comment attraper tous les noeud d'un même type dans un tableau
    Par lodan dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 01/04/2007, 16h36
  3. comment lire texte et mettre dans un tableau
    Par zeroenc dans le forum C
    Réponses: 4
    Dernier message: 02/01/2007, 23h42
  4. Réponses: 12
    Dernier message: 18/06/2006, 19h42
  5. Problème pour lire dans un tableau ...
    Par themis dans le forum Oracle
    Réponses: 1
    Dernier message: 15/02/2006, 18h04

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