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

PHP & Base de données Discussion :

Exécuter une procédure PL/SQL en PHP? [Trucs & Astuces] [Oracle]


Sujet :

PHP & Base de données

  1. #1
    Membre averti Avatar de Cerberes
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 328
    Points : 338
    Points
    338
    Par défaut Exécuter une procédure PL/SQL en PHP?
    Bonjour!

    Tout d'abord, désolé si cette question à déja été posée... J'ai lancé une recherche, mais je n'ai rien trouvé...

    Mon problème est le suivant. Dans le cadre d'un travail de diplôme, un collègue et moi-même devont créer un base Oracle et l'interface doit être en PHP. Je suis le DBA. Mon collègue s'occupe de la partie PHP.

    Problème: Pour lui simplifier la vie, j'ai créer des procédures (en PL/SQL sous Oracle). Ces procédures fonctionnes parfaitement, on les lances en utilisant le SQL réservé EXECUTE d'Oracle. Le problème, c'est qu'actuellement, on ne peut pas lancer d'ordres SQL tels qu'EXECUTE. Mon collègue se connecte en ODBC avec les commandes suivantes:
    • ODBC_DO
    • ODBC_EXEC
    • ODBC_PREPARE


    Donc, moment crucial: La question. Comment faire via une couche ODBC pour éxecuter des procédures internes à la base voulue?

    Merci d'avance de vos réponses, parce qu'on sèche...

    PS: La base est en Oracle 10g, pas d'interface WEB (donc pas de serveur apache).
    Merci d'éviter les UP et autres messages inutiles!
    Modérateur Informatique Générale (même si je me mets au Delphi)
    N'oubliez pas les règles!
    Mon adresse e-mail

  2. #2
    Membre habitué Avatar de .:morgoth:.
    Profil pro
    Inscrit en
    Février 2005
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 124
    Points : 132
    Points
    132
    Par défaut
    Salut,

    bon je te donne une astuce qui peut eventuellement marcher (a prendre vraiment au conditionnel).
    Dans le SGBD que j'utilise, il est possible d'exécuter une procédure par 'SELECT * from NOM_PROCEDURE (param1,param2,...)" meme si celle ci ne renvoie pas de resultat.

    Je n'ai aucune idée de la possibilité de cette solution sous Oracle mais sait on jamais.

  3. #3
    Membre chevronné
    Avatar de Bidouille
    Inscrit en
    Mars 2003
    Messages
    1 273
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 1 273
    Points : 1 990
    Points
    1 990
    Par défaut
    As-tu cherché dans la section Oracle ?

    http://www.developpez.net/forums/vie...&highlight=php
    Rédacteur PHP / Delphi ADO / Novell / OpenOffice.org

    Inutile de m'envoyer vos questions par MP, je ne réponds que par le forum.

  4. #4
    Membre averti Avatar de Cerberes
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 328
    Points : 338
    Points
    338
    Par défaut
    Citation Envoyé par .:morgoth:.
    Dans le SGBD que j'utilise, il est possible d'exécuter une procédure par 'SELECT * from NOM_PROCEDURE (param1,param2,...)" meme si celle ci ne renvoie pas de resultat.
    Salut! Merci de ta réponse, mais hélas, ça ne fonctionne pas sous Oracle... Comme la procédure que je lance ne retourne pas une valeur (ce n'est pas une fonction), mais lance un ordre de LDD (Langage de Définition des Données, modifie le schéma, en gros), impossible de lancer cette procédure par un select...

    Citation Envoyé par BiD0uille
    As-tu cherché dans la section Oracle ?

    http://www.developpez.net/forums/vie...&highlight=php
    j'avoue qu'en désespoir de cause, j'ai oublié de chercher par là...

    Hélas, le lien ne m'est pas utile... Si je ne m'abuse (je suis nul en PHP), OCI est une procédure qui fais appel à la base via un server WEB (apache), non? Et nous n'utilisons qu'une couche ODBC...
    Merci d'éviter les UP et autres messages inutiles!
    Modérateur Informatique Générale (même si je me mets au Delphi)
    N'oubliez pas les règles!
    Mon adresse e-mail

  5. #5
    Membre chevronné
    Avatar de Bidouille
    Inscrit en
    Mars 2003
    Messages
    1 273
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 1 273
    Points : 1 990
    Points
    1 990
    Par défaut
    Citation Envoyé par Cerberes
    Si je ne m'abuse (je suis nul en PHP), OCI est une procédure qui fais appel à la base via un server WEB (apache), non? Et nous n'utilisons qu'une couche ODBC...
    Non, tu t'abuses
    Les fonctions oci passent pas le pilote Oracle et les informations du tnsname.

    Tu n'as qu'à faire des tests.
    Rédacteur PHP / Delphi ADO / Novell / OpenOffice.org

    Inutile de m'envoyer vos questions par MP, je ne réponds que par le forum.

  6. #6
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    Pose ta fonction dans le forum Oracle, ou même Général SGBD.
    Le problème n'a pas grand chose à faire avec PHP.
    Boost ftw

  7. #7
    Membre averti Avatar de Cerberes
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 328
    Points : 338
    Points
    338
    Par défaut
    Citation Envoyé par loufoque
    Pose ta fonction dans le forum Oracle, ou même Général SGBD.
    Le problème n'a pas grand chose à faire avec PHP.
    Et bien, j'avoue être un peu perdu... Sur le forum Oracle, ils me diront que c'est une fonction PHP que je recherche, donc pas le bon forum... Bon, aujourd'hui, c'étais téhorie, la pratique reprends demain, nous allons donc creuser l'histoire d'une fonction OCI avec une couche ODBC...
    Merci d'éviter les UP et autres messages inutiles!
    Modérateur Informatique Générale (même si je me mets au Delphi)
    N'oubliez pas les règles!
    Mon adresse e-mail

  8. #8
    Membre chevronné
    Avatar de Bidouille
    Inscrit en
    Mars 2003
    Messages
    1 273
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 1 273
    Points : 1 990
    Points
    1 990
    Par défaut
    Teste par oci et reviens nous en parler.
    Rédacteur PHP / Delphi ADO / Novell / OpenOffice.org

    Inutile de m'envoyer vos questions par MP, je ne réponds que par le forum.

  9. #9
    Membre éclairé
    Avatar de Kioob
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 550
    Points : 764
    Points
    764
    Par défaut
    Perso avec Oracle 8, j'éxécutais ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    begin
    lafonction();
    end;
    Google is watching you !

  10. #10
    Membre averti Avatar de Cerberes
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 328
    Points : 338
    Points
    338
    Par défaut
    Citation Envoyé par BiD0uille
    Teste par oci et reviens nous en parler.
    A marche. J'essaie de persuader le collègue, on verra ce que ça donnera.

    Mais dans le cas des OCI, il devra refaire le script de connexion, juste? Ou les fonctions ODBC* fonctionnent avec les fonction OCI*? Je recherche un peu des infos sur internet, mais comme je n'y connais rien en PHP, c'est encore un peu tordu pour moi

    Citation Envoyé par Kioob
    Perso avec Oracle 8, j'éxécutais ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    begin
    lafonction();
    end;
    Justement, EXECUTE remplace BEGIN et END sous Oracle... Mais ton code, tu le lançais avec quelle fonction de PHP? ORA_DO? ORA_EXEC?

    J'essaierai déja avec les OCI... Merci beaucoup, en tout cas! je redonne des nouvelles...
    Merci d'éviter les UP et autres messages inutiles!
    Modérateur Informatique Générale (même si je me mets au Delphi)
    N'oubliez pas les règles!
    Mon adresse e-mail

  11. #11
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    Mais dans le cas des OCI, il devra refaire le script de connexion, juste? Ou les fonctions ODBC* fonctionnent avec les fonction OCI*?
    Oui il devra "refaire" le script de connexion.
    Si c'est bien fait, ça prend moins de 5 minutes (quoique si il faut faire la bufferisation pour OCI ça peut prendre un peu plus longtemps)

    Justement, EXECUTE remplace BEGIN et END sous Oracle... Mais ton code, tu le lançais avec quelle fonction de PHP? ORA_DO? ORA_EXEC?
    odbc_do et odbc_exec sont des synonymes.
    Boost ftw

  12. #12
    Membre averti Avatar de Cerberes
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 328
    Points : 338
    Points
    338
    Par défaut
    MERCI A TOUS!

    Nous avons enfin réussis. Nous utilisons BEGIN et END dans une fonction ODBC_DO (je crois, car mon collègue est à nouveau pas là, je devrai certainement apprendre le PHP d'ici à la fin de l'année, si il continue ), et ça marche!!! C'est kewl, enfin, on pourra continuer un peu dans ce travail...

    En tout cas, je suis étonné qu'EXECUTE ne fonctionne pas, puisque c'est exactement la même chose que begin/end... Étrange, mais je me suis tellement arraché de cheveux pour l'instant, que je vais me poser la question un peu plus tard, là...

    En tout cas, merci à tous...

    [EDIT]
    Et non, ce post n'avais pas disparu, il redescends des abîmes!
    Mais pour une bonne nouvelle, donc tout va bien...
    [/EDIT]
    Merci d'éviter les UP et autres messages inutiles!
    Modérateur Informatique Générale (même si je me mets au Delphi)
    N'oubliez pas les règles!
    Mon adresse e-mail

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. appel d'une procédure PL/SQL via PHP
    Par toine62 dans le forum PL/SQL
    Réponses: 7
    Dernier message: 30/06/2009, 19h28
  2. Exécuter une procédure stockée Sql Via VBA
    Par Daniel MOREAU dans le forum VBA Access
    Réponses: 10
    Dernier message: 09/03/2009, 10h07
  3. Exécuter une procédure PL/SQL avec JSP
    Par Banks dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 26/01/2009, 16h40
  4. Exécuter une procédure pl/sql
    Par wislam2007 dans le forum PL/SQL
    Réponses: 1
    Dernier message: 22/09/2008, 15h07
  5. Exécution d'une procédure PL/SQL via un dblink
    Par yador dans le forum PL/SQL
    Réponses: 4
    Dernier message: 13/03/2007, 09h42

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