IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WinDev Discussion :

[WD9] Appel d'une procedure stockée Oracle


Sujet :

WinDev

  1. #1
    Futur Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 10
    Points : 5
    Points
    5
    Par défaut [WD9] Appel d'une procedure stockée Oracle
    Bonjour,

    Je souhaite appeler une procédure stockée Oracle avec Windev9.
    J'ai essayé :
    - HExecuteRequeteSQL(mareq, MaConnexion, HRequeteSansCorrection, "Exec MaProc;") -> Marche pas (HRequeteDefaut marche pas non plus)
    - HExecuteRequeteSQL(mareq, MaConnexion, HRequeteDefaut, "Execute MaProc;") -> non plus (HRequeteSansCorrection marche pas non plus)
    - HExecuteRequeteSQL(mareq, MaConnexion, HRequeteSansCorrection, "Exec MaProc;end;/") -> non plus (HRequeteDefaut idem)
    SQLExec("Exec MaProc;",mareq) -> non plus

    Mais je n'ai aucune erreur... Ma procédure stockée doit me modifier un champ, c'est comme ça que je vois qu'elle n'est pas appelée ou qu'elle s'éxécute mal.

    Ca fait 3 jours que je cherche sur tous les forums et personne ne sait me répondre.

    Pouvez-vous m'aider ?

  2. #2
    Membre expert
    Avatar de Emmanuel Lecoester
    Profil pro
    Inscrit en
    Février 2003
    Messages
    1 493
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Février 2003
    Messages : 1 493
    Points : 3 266
    Points
    3 266
    Par défaut
    Il existe un fil sur les forums de l'éditeur avec une solution alambiquée mais fonctionnelle (passage par Access comme middleware).

    La P/S contient-elle un commit ? pour valider les actions
    Quel type d'accès ? natif , oledb, odbc, sqmx ?
    Emmanuel Lecoester
    => joomla addict.

  3. #3
    Futur Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Merci de m'avoir répondu, tu es le premier...

    La procédure stockée ne contient pas de commit mais je le fais dans mon code juste après
    J'accède à la base Oracle par ODBC
    Peux-tu développer le fait de passer par access pour executer ma procédure stp ?

  4. #4
    Membre expert
    Avatar de Emmanuel Lecoester
    Profil pro
    Inscrit en
    Février 2003
    Messages
    1 493
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Février 2003
    Messages : 1 493
    Points : 3 266
    Points
    3 266
    Par défaut
    L'ODBC c'est pas top. Ci-dessous le code repris du fil

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    Voila l'exemple pour l'utilisation des procédures stockées avec récupération des valeur renvoyées:
     
    maconnexion est un objet Automation("ADODB.Connection")
    cmd est un objet Automation dynamique
    DossierAppel est une chaîne =nom de la base+".GES_APPEL_EXT."
    datasource est une chaîne
    chaineconnexion est une chaîne
    datasource=chaine contenu dans le tnsname.ora
     
    //creation de la connexion oracle
    //chaine de connection
    chaineconnexion = "Provider=MSDAORA ;Data Source="+ datasource + ";USER ID=" + paramOracle.login + ";PASSWORD=" + paramOracle.password + ";"
    maconnexion>>ConnectionString = chaineconnexion
    //ouverture de la connexion
    maconnexion>>open
     
    //ouverture de la session
    cmd=allouer un objet Automation("ADODB.Command")//(equivalent sous vba à set cmd= new comman)
    cmd>>ActiveConnection=maconnexion
    cmd>>commandText=DossierAppel+"OPENSESSION"
    cmd>>Commandtype=4 //adcmdStoredProc
    //mise à jour des parametres
    cmd>>Parameters>>Refresh
    cmd>>Parameters("USER")>>Value = "Admin"
    cmd>>Parameters("PWD")>>Value = "Admin"
    cmd>>execute("","",128)//128=adExecuteNoRecords
     
    //'====================Creation entete du devis =============================
     
    //creation de l'entete du devis
     
    cmd>>CommandText = DossierAppel + "CREATIONENTETEDC"
    cmd>>CommandType = 4
    //met a jour les parametres
    cmd>>Parameters>>Refresh
    //on renseigne les parametres
    cmd>>Parameters("CODETIERS") = code du tiers
    cmd>>Parameters("CODEDEPOT") = ""
    madate est une Date=DateSys()
    cmd>>Parameters("DATEDOCUMENT") = la date
    cmd>>Execute("", "", 128)
    //on recupere les valeur de retour
    codedocutil est une chaîne = cmd>>Parameters("CODEDOCUTIL")>>Value
    codeinterne est un entier = cmd>>Parameters("CODEDOCINTERNE")>>Value
    A adapter bien sur.
    Emmanuel Lecoester
    => joomla addict.

  5. #5
    Membre à l'essai
    Inscrit en
    Octobre 2007
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 18
    Points : 20
    Points
    20
    Par défaut
    j'ai eu ce probleme il y a 5 ans :
    depuis j'utilises l'acces alternatif OTL4WD.

    http://www.sqlmanagerx.com/websqlx/h...ex.php?page=16

    si tu veux voir comment ca s'utilise la documentation est bien faite et apres une petite periode de prise en main ça deroule tres tres vite à l'utilisation.

    Pour te donner une idée télécharge l'exemple http://www.sqlmanagerx.com/SQLManage...lter-natif.rar

    gros avantage : l'auteur de cet acces est tres reactif sur le support de son produit.

    inconvenient : pas de gestion de l'analyse (mais comme je ne connecte que tres rarement mes applis à des analyses Hf, ca ne pose aucun probleme)

    sinon autre solution :
    Si ta proc ne renvoi pas de donnees transforme-là en fonction et appelle la fonction dans un select classique

    "select maFonction(param_fonction) as vRetour from dual "

    vretour sera un code retour renvoyé par ta fonction pour savoir si ton code PL s'est bien exécuté

  6. #6
    Membre expert
    Avatar de Emmanuel Lecoester
    Profil pro
    Inscrit en
    Février 2003
    Messages
    1 493
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Février 2003
    Messages : 1 493
    Points : 3 266
    Points
    3 266
    Par défaut
    Citation Envoyé par tjfromparis Voir le message
    sinon autre solution :
    Si ta proc ne renvoi pas de donnees transforme-là en fonction et appelle la fonction dans un select classique

    "select maFonction(param_fonction) as vRetour from dual "

    vretour sera un code retour renvoyé par ta fonction pour savoir si ton code PL s'est bien exécuté
    Ta solution ne fonction QUE si ta fonction est pure donc qu'elle ne fait aucun insert / update.
    Emmanuel Lecoester
    => joomla addict.

  7. #7
    Futur Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Bonjour
    J'ai essayé ça aussi mais ça ne marche toujours pas.

  8. #8
    Membre expert
    Avatar de Emmanuel Lecoester
    Profil pro
    Inscrit en
    Février 2003
    Messages
    1 493
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Février 2003
    Messages : 1 493
    Points : 3 266
    Points
    3 266
    Par défaut
    Quel est le message d'erreur ???? car c'est une solution qui devrait fonctionner.
    Emmanuel Lecoester
    => joomla addict.

  9. #9
    Membre à l'essai
    Inscrit en
    Octobre 2007
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 18
    Points : 20
    Points
    20
    Par défaut
    Ta solution ne fonction QUE si ta fonction est pure donc qu'elle ne fait aucun insert / update.
    pourquoi ?
    nous avons des fonctions qui font des controles d'existences, si ca existe => update sinon insert.

  10. #10
    Membre expert
    Avatar de Emmanuel Lecoester
    Profil pro
    Inscrit en
    Février 2003
    Messages
    1 493
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Février 2003
    Messages : 1 493
    Points : 3 266
    Points
    3 266
    Par défaut
    Citation Envoyé par tjfromparis Voir le message
    pourquoi ?
    nous avons des fonctions qui font des controles d'existences, si ca existe => update sinon insert.
    Tu n'as pas du déclarer ta fonction pure avec un pragma ?
    Emmanuel Lecoester
    => joomla addict.

  11. #11
    Futur Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    J'ai essayé "SQLExec("begin nom_de_la_procedure(param1,param2,...);end ;","nom_requete")"
    Il me dit "Problème d'initialisation de la Requete. Mot MaProc (qui est le nom de ma procédure) inattendu"

    Alors j'ai essayé "SQLExec("SELECT nom_de_la_procedure(param1) FROM DUAL ","nom_requete")"
    il me dit "Problème d'initialisation de la Requete. Mot ( inattendu"

    Je me suis aussi rendue compte que mon SQLConnecte ne fonctionnait pas correctement, donc je l'ai refait.

    Je vais essayer avec OTL4WD mais c'est prévu pour une version 10 et non 7.5 comme annoncé sur le site, donc je dois copier méthode par méthode... Mais je vais tester quand même

  12. #12
    Membre expert
    Avatar de Emmanuel Lecoester
    Profil pro
    Inscrit en
    Février 2003
    Messages
    1 493
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Février 2003
    Messages : 1 493
    Points : 3 266
    Points
    3 266
    Par défaut
    - un source WD75 s'ouvre avec toutes versions supérieuers (même la version 12)

    - tu as essayé avec hSansCorrection (ou un truc du genre) ?
    Emmanuel Lecoester
    => joomla addict.

  13. #13
    Firetox
    Invité(e)
    Par défaut
    Je vais essayer avec OTL4WD mais c'est prévu pour une version 10 et non 7.5 comme annoncé sur le site, donc je dois copier méthode par méthode... Mais je vais tester quand même
    non les acces sont fournis en 7.5 et donc de ce fait vous pouvez integrer la classe dans un projet 10 sans probleme

  14. #14
    Membre à l'essai
    Inscrit en
    Octobre 2007
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 18
    Points : 20
    Points
    20
    Par défaut
    voila le bazar :

    CREATE OR REPLACE FUNCTION HR.F_SSO_APP (P_APPLI IN VARCHAR2, P_LOGIN IN VARCHAR2)
    RETURN VARCHAR2
    IS
    W_DATEX VARCHAR2(256);
    W_ROWID VARCHAR2(256);
    W_CPT NUMBER;
    PRAGMA AUTONOMOUS_TRANSACTION;
    BEGIN
    W_DATEX := TO_CHAR(SYSDATE,'DD/MM/YYYY HH24:MI:SS');
    SELECT COUNT(*)
    INTO W_CPT
    FROM ECRYSTA.SSO_APP
    WHERE APPLI = P_APPLI
    AND LOGIN_APP = P_LOGIN;
    IF W_CPT = 1 THEN
    SELECT ROWID
    INTO W_ROWID
    FROM ECRYSTA.SSO_APP
    WHERE APPLI = P_APPLI
    AND LOGIN_APP = P_LOGIN;
    COMMIT;
    RETURN W_ROWID;
    END IF;
    INSERT INTO ECRYSTA.SSO_APP
    (IDENT, APPLI, LOGIN_APP)
    VALUES (W_DATEX, P_APPLI, P_LOGIN);
    SELECT ROWID
    INTO W_ROWID
    FROM ECRYSTA.SSO_APP
    WHERE IDENT = W_DATEX
    AND APPLI = P_APPLI
    AND LOGIN_APP = P_LOGIN;
    UPDATE ECRYSTA.SSO_APP
    SET IDENT = W_ROWID
    WHERE IDENT = W_DATEX
    AND APPLI = P_APPLI
    AND LOGIN_APP = P_LOGIN;
    COMMIT;
    RETURN W_ROWID;
    END;
    /
    elle n'est pas de moi !
    ca roule tres bien le tout accedant à une base via un dblink.
    Le but de la manoeuvre est de générer un identifiant unique , donc nous prenons le rowid.

  15. #15
    Membre expert
    Avatar de Emmanuel Lecoester
    Profil pro
    Inscrit en
    Février 2003
    Messages
    1 493
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Février 2003
    Messages : 1 493
    Points : 3 266
    Points
    3 266
    Par défaut
    C'est ptet le "PRAGMA AUTONOMOUS_TRANSACTION;" qui rend ta procédure pure (vu qu'elle est autonome).

    Merci pour ce complément même si il ne répond pas à la question de base.
    Emmanuel Lecoester
    => joomla addict.

  16. #16
    Futur Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par Firetox Voir le message
    non les acces sont fournis en 7.5 et donc de ce fait vous pouvez integrer la classe dans un projet 10 sans probleme
    Non ça ne marche pas, je souhaite l'ouvrir avec une version 9 et quand je le lance avec windev 9 :
    "Erreur pendant le chargement du projet.
    Impossible de terminer l'initialisation :
    La version de l'objet est incompatible avec la version courante.
    Ce fichier est au format WinDev version 10."

    Donc j'ai copié méthode par méthode et j'en suis toujours à l'adapter.

  17. #17
    Expert éminent sénior

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    19 647
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 19 647
    Points : 32 889
    Points
    32 889
    Par défaut
    La compatibilité Windev est (partiellement) descendante.

    On peut ouvrir tout source 7.5 et suppérieur avec une versions WD 7.5 et suppérieure. Par exemple WD7.5 avec WD12.
    Les sources des versions antérieures à 7.5 doivent être convertis en version 7.5 pour être utilisés avec une version Windev 7.5 ou suppérieure (d'ou le partiellement)
    Mais on ne peut ouvrir un source version 10 avec un Windev version 9 par exemple.

  18. #18
    Firetox
    Invité(e)
    Par défaut
    quel lien avez vous utilise pour telecharger que je verifie

    mais http://www.sqlmanagerx.com/SQLManage...4WD/OTL4WD.rar est en windev 7.5

    je viens de faire le test du telechargement , et ouverture du projet avec windev 7.5 pas de probleme : il est bien en 7.5 donc avec windev 9 il ne doit pas y avoir de probleme

  19. #19
    Futur Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    J'ai télécharger ce que l'on m'a indiqué et ce n'est pas une version 7.5.
    Je sais qu'il n'est pas possible d'ouvrir un fichier v10 avec une v9, c'était justement le problème !!

    Je vais essayer avec le lien que tu m'as donné

  20. #20
    Futur Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    J'ai essayé d'éxécuter une procédure stockée sur l'appli téléchargée dans la classe OTL4WD et avec la méthode mysqlExecPS et il me dit
    "Erreur à la ligne 4 du traitement Méthode mySQLExecPS.
    Vous avez appelé la fonction AppelDLL32.
    La fonction 'OTLExecPS' n'a pas été trouvée dans la DLL OTL4WD"

    J'ai réussi à effectuer la connexion, à récupérer les données de ma table, à compter le nombre de lignes, mais pas à éxécuter de procédure et je ne trouve aucun bouton qui le fasse (parmi les 27!!)

    Je me demande vraiment s'il est possible d'appeler une procédure stockée en windev ?? et comme pcsoft ne répond toujours pas à mes demandes...

Discussions similaires

  1. [CR XI] Comment utiliser une procedure stockée oracle avec crystal report XI
    Par saidms dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 03/01/2011, 09h28
  2. [Oracle] PHP ne retourne que la dernière ligne d'un resultat d'une procedure stockée ORACLE
    Par tytous dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 08/06/2010, 07h57
  3. executer une procedure stocké Oracle dans Perl
    Par makohsarah dans le forum SGBD
    Réponses: 2
    Dernier message: 29/04/2009, 18h15
  4. Réponses: 7
    Dernier message: 16/12/2005, 10h15
  5. Appel a une procedure stockée en vba
    Par The_Nail dans le forum VBA Access
    Réponses: 36
    Dernier message: 01/04/2003, 16h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo