Bonjour,

Je désire exécuter des procédures stockées et des fonctions stockées (que j'aurai écrites) dans ma base Oracle 9i.

C'est cette méthodologie que j'applique dans l'ensemble des projets informatiques auquels je participe. Que ce soit en C++, C#, Delphi, VBA ...

En effet, le fait d'écrire les requêtes en dur dans le code WinDev nécessite, en cas de correctif, une nouvelle compilation, une nouvelle livraison et un nouveau déploiement.

Il doit bien être possible tout de même d'exécuter une procédure stockée à partir de WinDev en passant les paramètres en entrées et en récupérant le résultat dans WinDev.

Voici l'exemple d'une procédures tockée qui prends en entrée un login et mot de passe, et renvoie l'identifiant de l'utilisateur désigné, l'identifiant et le nom de son groupe ainsi que l'identifiant du responsable de son groupe.

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
16
17
18
19
20
21
22
23
24
25
26
27
28
CREATE OR REPLACE  PROCEDURE OGBC_CHECK_CONNECTION (
  login in bctbutilisateur.util_login%type,
  pwd in bctbutilisateur.util_pwd%type,
  idGroupe out bctbgroupe.grpe_id%type,
  nomGroupe out bctbgroupe.grpe_nom%type,
  idRespGroupe out bctbgroupe.rgpe_id%type,
  idUser out bctbutilisateur.util_id%type
)
IS
BEGIN
 
SELECT  g.grpe_nom,
        g.grpe_id,
        rg.util_id,
        u.util_id
INTO  nomGroupe,
      idGroupe,
      idRespGroupe,
      idUser
FROM  bctbutilisateur u,
      bctbgroupe g,
      bctbresponsable_groupe rg
WHERE g.grpe_id = u.grpe_id
AND   g.grpe_id = rg.grpe_id
AND   u.util_login = login
AND   u.util_pwd = pwd;
 
END;
Via cette requête (dans l'analyseur de requête) ça marche très bien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
variable temp1 number;
variable temp2 varchar2(50)
variable temp3 number
variable temp4 number
call ogbc_check_connection('rp', 'rp', :temp1, :temp2, :temp3, :temp4);
print :temp1
print :temp2
print :temp3
print :temp4
Par contre, à partir de WinDev je tourne en rond, pas moyen de l'exécuter.

Merci de votre aide.