juin
2014
Contexte du billet
Windev : 14
Accès natif : Oui
Base de données : Sybase
Explications : appel d’une procédure stockée sur un serveur de base de données SYBASE
Introduction
Je viens d’être confronté à un problème, l’appel d’une procédure stockée sur un serveur SYBASE via un accès natif. Avant de commencer à coder l’ensemble du cahier des charges, je commence par écrire une simple procédure et à coder la communication entre WinDev et Sybase. La procédure effectue uniquement un INSERT. Code la procédure stockée :
as
begin
insert into tmp values (@ps_RglMepIdn, @ps_datDeb, @ps_datFin)
end
Procédure OK, maintenant la communication …. Premier réflexe, regarder l’aide PC-SOFT. La documentation depuis la version 14 a très peu évoluée, vous pouvez la consulter à l’adresse suivante :
http://doc.pcsoft.fr/fr-FR/?acces-natif-sybase-recuperer-valeur-sortie-une-procedure-stockee-executee-sur-serveur
On suit la doc …
Documentation avec un exemple, impeccable je reproduit l’exemple, déclaration d’une variable de type source de données et fonction HExécuteRequêteSQL. Une erreur est retournée (cf. image ci-dessous), Le problème semble de provenir d’un problème de correspondance de type de variable.
J’ai amélioré l’exemple pour prendre en charge la correspondance des variables sans succès, SYBASE reçoit les variables à NULL
Ci-dessous le code écrit d’après la doc :
ld_dateDeb est une Date
ld_dateFin est une Date
li_test=gt_LstRglMep[li_i][2]
ld_dateDeb=gt_LstRglMep[li_i][3]
ld_dateFin=gt_LstRglMep[li_i][4]
maProc est une Source de Données
maProc.ps_RglMepIdn=li_test
maProc.ps_datDeb=ld_dateDeb
maProc.ps_datFin=ld_dateFin
SI PAS HExécuteRequêteSQL(maProc,connexion,hRequêteSansCorrection,"test @ps_RglMepIdn, @ps_datDeb, @ps_datFin") ALORS
Erreur(HErreurInfo(hErrComplet))
FIN
Malgré de nombreuses tentatives, je n’ai pas réussi à faire appel à une procédure stockée SYBASE en utilisant une variable de type sources de données.
Une solution
Une solution, déclarer une variable de type chaîne pour gérer l’appel à la procédure stockée et modifier le paramètre « mode » de la fonction HExécuteRequêteSQL, celui-ci doit contenir les constantes :
Exemple de code :
Erreur("Erreur de l'exécution de la mise à jour des emplacements : "+RC+HErreurInfo())
FIN
Conclusion
Ce billet permet d’apporter une solution pour appeler une procédure stockée SYBASE dans l’EDI WinDev en version 14. La solution ne prend pas en compte si la procédure stockée retourne une valeur. Dans une prochain billet, j’effectuerai un test sur la version 19 pour tenter de reproduire l’exemple de la doc.
Commentaires récents
- Héritage en WinDev : BUG ou subtilité du W-langage??? dans
- Héritage en WinDev : BUG ou subtilité du W-langage??? dans
- Héritage en WinDev : BUG ou subtilité du W-langage??? dans
- Héritage en WinDev : BUG ou subtilité du W-langage??? dans
- Windev : Norme de programmation pour les procédures et les champs graphiques dans