Bonjour à tous,
J'ai une table IDENT qui contient les champs IDENT_NUM, IDENT_NOM, etc
J'ai créé une procédure stockée qui s'appelle CHERCHEIDENT et qui doit renvoyer le nom, le prénom, la date de naissance et le sexe correspondant au numéro unique Num et à un champ Genre données toutes les deux passées en paramètres.
Code sql : 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 ALTER PROCEDURE "CHERCHEIDENT" ( "NUM" INTEGER, "GENRE" VARCHAR(1) ) RETURNS ( "NOM" VARCHAR(20), "PRENOM" VARCHAR(20), "DDN" DATE, "SEXE" VARCHAR(1) ) AS BEGIN SELECT IDENT_NOM, IDENT_PRENOM, IDENT_DDN, IDENT_SEXE FROM IDENT WHERE IDENT_NUM = :Num AND IDENT_GENRE = :Genre INTO Nom, Prenom, Ddn, Sexe; EXIT; END;
Cette procédure fonctionne avec la console IB.
Je l'appelle avec le code suivant:
j'obtiens le message d'erreur suivant (copie de mon fichier log):
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 With SQLQuery1.Params do begin Clear; CreateParam(ftInteger,'Num',ptInput); CreateParam(ftString,'Genre',ptInput); CreateParam(ftString,'Nom',ptOutput); CreateParam(ftString,'Prenom',ptOutput); CreateParam(ftDate,'Ddn',ptOutput); CreatePararam(ftString,'Sexe',ptOutput); ParamByname('Num').AsInteger := 24; ParamByname('GENRE').AsString := 'P'; end; Add('EXECUTE PROCEDURE CHERCHEIDENT'); EnvoieSql(ListeChaine);// sous-routine qui ne fait qu'envoyer la chaine transmise. End;
Si je passe les paramètres dans le SELECT, j'ai le message:Début TIdentite.Lire 04/03/2010 20:35:14:984
Début de EnvoieSql avec le message : 04/03/2010 20:35:14:984
EXECUTE PROCEDURE CHERCHEIDENT
********** ERREUR TDBXError *** parameter mismatch for procedure CHERCHEIDENT 04/03/2010 20:35:20:869
j'ai essayé de différentes manières et je ne trouve pas la solution. cela fait une semaine que je m'arrache les cheveuxDébut TIdentite.Lire 04/03/2010 19:17:8:272
Début de EnvoieSql avec le message : 04/03/2010 19:17:8:273
SELECT Nom, Prenom, Ddn, Sexe
FROM CHERCHEIDENT(24, 'P');
********** ERREUR TDBXError *** unassigned code 04/03/2010 19:17:16:305
Cela vient-il de la procédure stockée ou de mon Select ?
Je précise que j'expédie mon SELECT par la méthode OPEN du SQLQuery
Si quelqu'un avait la bonté d'âme de me donner son avis...
Partager