Bonjour à tous,
comme mon profil l'indique, je me débrouille en VB mais pas beaucoup en Oracle. Et donc ca me pose des problèmes que voici (du moins un en particuliers):
j'ai procédure machin(...,retour) qui renvoie une valeur retour et qui fait un select et des opérations sur le résultat de ce select, pour visualiser les choses j'affiche mes valeurs un peu partout et pour essayer je mets en commentaires toutes les lignes relatives à retour pour tester ma procédure dans sql+:
(ne lisez pas le code tout de suite)
CREATE OR REPLACE PROCEDURE "SYSTEM"."MACHIN" ( Mes paramètres?. Et retour OUT NUMBER ) IS ret NUMBER; /*variable retournée*/ CURSOR moteur_cur IS SELECT * FROM vue_moteur WHERE boitier LIKE boitierI; moteur_rec moteur_cur%ROWTYPE; BEGIN
ret := 0;
OPEN moteur_cur; FETCH moteur_cur INTO moteur_rec;
WHILE moteur_cur%FOUND LOOP /* plein de truc?*/
COMMIT; ret := ret + 1 ; FETCH moteur_cur INTO moteur_rec; END LOOP;
dbms_output.put_line('retour: '||ret); CLOSE moteur_cur; /*retour := ret +1;*/ COMMIT;
EXCEPTION
WHEN OTHERS THEN ROLLBACK; /*retour := - 10 - ret ;*/ dbms_output.put_line('retour: '||ret);
END;
|
Donc j'incrémente ret à chaque opération et je retourne sa valeur...
Pas de problème, sauf quand j'appelle la procédure à partir de VB, j'obtiens la valeur initial de ret et rien d'autre. Je suppose donc que ma fonction tourne bien et pas d'exception et je sais pas ...
La version appelée dans SQL+ renvoie le bon résultat à chque fois....
J'y comprends rien.
Merci de m'éclairer un peu.
Signé: Egalon qui comprend difficilement