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.