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 :

Petit problème de procédure stockée


Sujet :

SQL Firebird

  1. #1
    Nouveau membre du Club
    Inscrit en
    Novembre 2007
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 50
    Points : 39
    Points
    39
    Par défaut Petit problème de procédure stockée
    Bonjour à tous, je sillonne le site et internet et je trouve pas de réponse, pourtant ça me semble tout con :
    J'essaye de faire une procédure stockée qui me renvoie plusieurs lignes et appeler cette proc sans y arriver.
    Pour simplifier ma proc est du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    CREATE PROCEDURE ma_proc (
        date_du date not null,
        date_au date not null)
    returns (
        employe varchar(100),
        colonne varchar(50),
        valeur numeric(9,2))
    as
    BEGIN
       SELECT employe, colonne, valeur
       FROM une_table
       INTO :employe, :colonne, :valeur;
       suspend;
    END
    La procédure se compile correctement, mais pas moyen de l'appeler. Quand je l'appel, que je fasse ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM ma_proc('2011-01-01','2011-12-31')
    ou ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    EXECUTE PROCEDURE ma_proc('2011-01-01','2011-12-31')
    J'ai un message d'erreur : "multiple rows in singleton select". Je suppose donc que ma procédure est mal écrite et n'attends qu'un seul enregistrement en retour, mais je trouve pas comment renvoyer plusieurs ligne. J'essaye de remplacer suspend par exit ça marche pas non plus.

    Merci d'avance.

    P.S : Je pense que la FAQ firebird (qui rend des services énormes) pourrait être un peu plus étoffée concernant l'écriture et l'utilisation des procédures stockées et des triggers. En donnant un exemple d'écriture d'une procédure stockée toute con pour juste avoir la syntaxe.

  2. #2
    Nouveau membre du Club
    Inscrit en
    Novembre 2007
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 50
    Points : 39
    Points
    39
    Par défaut
    Pardon, j'ai trouvé la réponse moi même... J'étais découragé alors j'ai fait appel à vous et juste après j'ai enfin trouvé une réponse sur un forum anglais.

    Donc pour info si qq'un trouve ce sujet et est intéressé, il faut une petite boucle autour du suspend, le corps de la proc deviens donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    FOR
       SELECT employe, colonne, valeur
       FROM une_table
       INTO :employe, :colonne, :valeur
    DO
       suspend;
    Le reste est correct apparemment !!!
    Je me remercie (lol) et m'excuse de vous avoir dérangé pour rien.

    Bonne semaine à toute la communauté développez.com !!!

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

Discussions similaires

  1. [SQLServer 2000] Problème accès procédure stockée
    Par LE NEINDRE dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 27/08/2007, 14h21
  2. Problème de procédure stockée fausse
    Par le-maraudeur dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 24/07/2007, 13h21
  3. [SQLSERVER]Problème de procédure stockée
    Par mikedavem dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 05/12/2006, 00h17
  4. Réponses: 1
    Dernier message: 17/07/2006, 17h08
  5. Problème de procédure stockée
    Par Sorcier157 dans le forum Langage SQL
    Réponses: 9
    Dernier message: 17/03/2005, 17h57

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