PB à toute heure et à tout moment. (à parcourir avec modération)

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.

#1 06-10-2010 14:28:44

Ben53  
Membre Geek
Date d'inscription: 18-02-2010
Messages: 46
Pépites: 184
Banque: 0

PB12-ORACLE - Utilisation procédures stockées avec OLEDB -

Bonjour,
Est-il possible d’appeler une procédure stockée qui retourne un curseur (ou plusieurs) en utilisant une connexion OLEDB ?

Pour info je travaille avec une base de données ORACLE 8.1.7 et Powerbuilder 12 Classic.

De plus j'utilise ce code avec le client oracle 9i et cela fonctionne :

Code: pb

do while (ll_pos < gl_iter) and (lb_iter = true)
  declare DONNE_DER_ETAT_ET_MVT procedure for GPAO_ETIQUETTE.DONNE_DER_ETAT_ET_MVT (:as_eti) using SQLCA;
      
  EXECUTE DONNE_DER_ETAT_ET_MVT;  
     FETCH DONNE_DER_ETAT_ET_MVT
  INTO :ls_etat, :ls_mouvement;
  CLOSE DONNE_DER_ETAT_ET_MVT;
  
  
  ls_tmp = String(SQLCA.SqlCode)
  if SQLCA.SqlCode = 0 then
    lb_iter = false
  end if
  
  ll_pos ++  
loop


Si quelqu'un pouvais me donnée la syntaxe à utiliser avec OLEDB....
Merci d'avance

Dernière modification par Ben53 (06-10-2010 14:35:29)

Hors ligne

 

#2 06-10-2010 15:06:14

Yanis  
Modérateur
Lieu: paris
Date d'inscription: 16-06-2010
Messages: 349
Pépites: 665
Banque: 150

Re: PB12-ORACLE - Utilisation procédures stockées avec OLEDB -

Salut,

   1 > Quelle erreur as tu ?

   2 > Quel driver OLEDB utilise tu ?

   3 > J'ai un souvenir ( je ne sais pas si celà est toujours vrai ) qu'il y avait un problème sur ORACLE 8i pour retourner plusieurs result Set en OLEDB.

Hors ligne

 

#3 06-10-2010 15:11:38

Ben53  
Membre Geek
Date d'inscription: 18-02-2010
Messages: 46
Pépites: 184
Banque: 0

Re: PB12-ORACLE - Utilisation procédures stockées avec OLEDB -

1- J'ai l'erreur : "Procedure has not been executed or has no results"
2- Param de connexion : PROVIDER='OraOLEDB.Oracle',DATASOURCE='TOTO_DEV',DecimalSeparator=',',DelimitIdentifier='No',PBCatalogOwner='POWERB',CommitOnDisconnect='No',DisableBind=0

J'ai essayer aussi ce genre de syntaxe

Code: pb

FUNCTION String DONNE_MENU_OPE(string bfope) RPCFUNC ALIAS FOR "GPAO_SUIVI_ACT_ILOTS.DONNE_MENU_AUTORISE_OPERATION"


Merci

Hors ligne

 

#4 08-10-2010 12:51:23

Yanis  
Modérateur
Lieu: paris
Date d'inscription: 16-06-2010
Messages: 349
Pépites: 665
Banque: 150

Re: PB12-ORACLE - Utilisation procédures stockées avec OLEDB -

Salut,

   Je te relance car j'ai fait quelques tests et que j'ai pu utiliser l'OLEDB avec PB12. Je dois te dire que je ne suis pas dans la même configuration que toi.

   Es-tu sur de renvoyer 1 resultset car moi j'ai eu la même erreur lorsque ma SP ne renvoyait rien et que je faisait le CLOSE de la PROC.
   Le CLOSE ne devant être utilisé que si possibilité de faire un fetch du resultSet.
   Après le EXECUTE je test si code = 0 alors fetch et close sinon je ne fais rien. ( je sais que tu as dis que celà fonctionne avec le client ORACLE mais ton test est il effectué avec le même paramètre)

Hors ligne

 

#5 08-10-2010 13:37:37

Ben53  
Membre Geek
Date d'inscription: 18-02-2010
Messages: 46
Pépites: 184
Banque: 0

Re: PB12-ORACLE - Utilisation procédures stockées avec OLEDB -

Ma procédure stockée renvoi un curseur de deux champs, donc pas de problèmes de ce coté...

Utilise tu une base de données oracle ?

C'est sympa de t’attarder sur mon problème en tout cas... n'ayant toujours pas trouvé de solution...

Hors ligne

 

#6 08-10-2010 14:43:29

wazou1812  
Modératrice
Award: bf
Date d'inscription: 24-05-2006
Messages: 610
Pépites: 2,097
Banque: 3,536,631,712,504

Re: PB12-ORACLE - Utilisation procédures stockées avec OLEDB -

Ben53 a écrit:

Bonjour,
Est-il possible d’appeler une procédure stockée qui retourne un curseur (ou plusieurs) en utilisant une connexion OLEDB ?

Pour info je travaille avec une base de données ORACLE 8.1.7 et Powerbuilder 12 Classic.

De plus j'utilise ce code avec le client oracle 9i et cela fonctionne :

Code: pb

do while (ll_pos < gl_iter) and (lb_iter = true)
  declare DONNE_DER_ETAT_ET_MVT procedure for GPAO_ETIQUETTE.DONNE_DER_ETAT_ET_MVT (:as_eti) using SQLCA;
      
  EXECUTE DONNE_DER_ETAT_ET_MVT;  
     FETCH DONNE_DER_ETAT_ET_MVT
  INTO :ls_etat, :ls_mouvement;
  CLOSE DONNE_DER_ETAT_ET_MVT;
  
  
  ls_tmp = String(SQLCA.SqlCode)
  if SQLCA.SqlCode = 0 then
    lb_iter = false
  end if
  
  ll_pos ++  
loop


Si quelqu'un pouvais me donnée la syntaxe à utiliser avec OLEDB....
Merci d'avance

Le close ne devrait-il pas être sorti de la boucle ?

Hors ligne

 

#7 12-10-2010 07:21:59

Ben53  
Membre Geek
Date d'inscription: 18-02-2010
Messages: 46
Pépites: 184
Banque: 0

Re: PB12-ORACLE - Utilisation procédures stockées avec OLEDB -

Bonjour,

Je n'ai toujours pas résolu le problème, même en sortant le close de a boucle effectivement....

Toujours une erreur d'exécution de procédure...

Des idées ?

Merci....

Hors ligne

 

#8 12-10-2010 07:30:25

wazou1812  
Modératrice
Award: bf
Date d'inscription: 24-05-2006
Messages: 610
Pépites: 2,097
Banque: 3,536,631,712,504

Re: PB12-ORACLE - Utilisation procédures stockées avec OLEDB -

Bonjour,

Il faudrait tester le sqlca.sqlcode

apres le fetch  et apres l'instruction execute

et afficher la variable sqlca.sqlerrtext.

Hors ligne

 

#9 12-10-2010 08:01:29

Ben53  
Membre Geek
Date d'inscription: 18-02-2010
Messages: 46
Pépites: 184
Banque: 0

Re: PB12-ORACLE - Utilisation procédures stockées avec OLEDB -

J'ai fait ceci :

Code: pb

do while (ll_pos < gl_iter) and (lb_iter = true)
  declare DONNE_DER_ETAT_ET_MVT procedure for GPAO_ETIQUETTE.DONNE_DER_ETAT_ET_MVT (:as_eti) using SQLCA;
      
  EXECUTE DONNE_DER_ETAT_ET_MVT;  
  ls_error_cod = String(SQLCA.SqlCode) //--> -1
  ls_err_txt   = String (SQLCA.sqlerrtext) //--> Can not get parameters of procedure GPAO_ETIQUETTE.DONNE_DER_ETAT_ET_MVT.
  
     FETCH DONNE_DER_ETAT_ET_MVT
  INTO :ls_etat, :ls_mouvement;
  
  ls_error_cod = String(SQLCA.SqlCode) //--> -1
  ls_err_txt   = String (SQLCA.sqlerrtext) //--> Cursor is not open

  if SQLCA.SqlCode = 0 then
    lb_iter = false
  end if
  
  ll_pos ++  
loop

CLOSE DONNE_DER_ETAT_ET_MVT;


Les valeurs des variables sont dans le code.

J'ai vu qu'il y avait cette syntaxe pour le declare qui existait :

Code: pb

declare DONNE_DER_ETAT_ET_MVT procedure for GPAO_ETIQUETTE.DONNE_DER_ETAT_ET_MVT @Etiquette =:as_eti using SQLCA;

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22