Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
oui ! c'est de la folie ! bon, j'ai oublié un petit détail, la base liée à PB est informix mais ca ne devrait rien changer
Hors ligne
Bonjour,
Voici un exemple de gestion des procédures stockées sous Informix en PB8.
DECLARE lsp_proc_toto PROCEDURE FOR sp_proc_toto(:as_param1, :as_param2) USING sqlca; EXECUTE lsp_proc_toto; IF sqlca.sqlcode <> 0 THEN // dans ce cas erreur en gros la procédure n'existe pas sous ce nom // ou avec ces paramètre is_erreur = "Erreur SQL executable : " + string(sqlca.SqlDBCode) + " " + sqlca.SqlErrText RETURN 1 ELSE //ce sont les valeurs retournées par la procédure FETCH lsp_proc_toto INTO :li_erreur, :ls_erreur ; IF SQLCA.sqlcode <> 0 THEN //dans ce cas erreur dans le déroulement de la procédure ls_msg_erreur = "Erreur fetch : " + string(SQLCA.sqldbcode) + " " + trim(SQLCA.sqlerrtext) CLOSE lsp_proc_toto; RETURN 1 ELSE IF li_erreur <> 0 THEN //dans ce cas erreur dans le déroulement de la procédure //si les erreurs sont gérées dans la procédure ls_msg_erreur = "Erreur li_erreur: " + string(li_erreur) + " " + trim(ls_erreur) CLOSE lsp_proc_toto; RETURN 1 END IF END IF END IF CLOSE lsp_proc_toto;
Dans les préconisations importantes (au moins avec Informix) :
Donc les paramètres doivent être passés avec les 2 points :
Le type des paramètres entre string, date, integer... doit être indentique dans PB et dans la procédure
Les valeurs retournées par la procédure doivent aussi être mis avec les 2 points :
Ne pas oublier de faire le close quand cela est necessaire (en suivant dans l'exemple)
Il me semble que dans les posts précédents, il manque des petits morceaux.......
Hors ligne
effectivement j'ai testé cette méthode... sans succès... pas d'erreur à la compile mais à l'exécution
mais bonne nouvelle j'ai trouvé la solution du moins pour Oracle, ce qui tombe bien car sous Informix je ne dois pas faire cet appel.
DECLARE monCursor CURSOR FOR SELECT invest_sn FROM tb_investigation; OPEN monCursor; MessageBox("DEBUGBOX", String(sqlca.sqlcode) + ":" + sqlca.sqlerrtext + "/" + this.inv_comment) CLOSE monCursor;
Etonnant non ? Merci à vous tous de m'avoir aider et dans un temps record
j'espere pouvoir vous rendre la pareil
Hors ligne
Il me semble qu'il n'était plus possible d'utiliser le caractère @ depuis PB8 (caractère réservé) ... mais suis pas certain à 100%
Hors ligne
--------------------------------------------------------------------
Bonjour, peut-on considérer que le problème est Résolu ?
--------------------------------------------------------------------
Hors ligne
je pense que oui ! et merci encore
Hors ligne