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 :

Récupérer le RefCursor d'une function Oracle [Oracle]


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Inscrit en
    Juillet 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 13
    Points : 12
    Points
    12
    Par défaut Récupérer le RefCursor d'une function Oracle
    Bonjour,

    Je suis en train d'écrire un module PHP qui doit appeler une fonction Oracle qui me retourne un RefCursor afin d'accéder aux données récupérées par ma fonction.

    Le problème c'est que je ne connais pas du tout Oracle, j'ai regardé des doc que j'ai trouvé sur le net, mais l'utilisation de fonction se fait toujours à l'intérieur de bloc PL/SQL. Je n'ai qu'un accès en lecture aux données Oracle donc je ne peux pas écrire de procédure Oracle (de toute façon je ne saurais pas le faire non plus. ^^).

    Pourriez-vous m'indiquez la syntaxe pour récupérer le RefCursor (depuis PHP) renvoyée par une méthode Oracle?

    Merci

  2. #2
    Membre à l'essai
    Inscrit en
    Juillet 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 13
    Points : 12
    Points
    12
    Par défaut
    Pour info, voici le code qui fonctionne, la fonction appelée c'est GetTarif du package WEB_CMD_DEV:

    Code php : 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
     
    public function update()
        {
            $host     = Mage::getStoreConfig('service/fioul/host');
            $dbname   = Mage::getStoreConfig('service/fioul/dbname');
            $username = Mage::getStoreConfig('service/fioul/dbuser');
            $password = Mage::getStoreConfig('service/fioul/dbpasswd');
     
            $conn = oci_connect($username, $password, "$host/$dbname";);
     
            if ($conn === false) {
                $e = oci_error();
                Mage::throwException(htmlentities($e['message'], ENT_QUOTES));
            }
     
           $sql = 'BEGIN :rc := WEB_CMD_DEV.GetTarif; END;';
     
           $stid = oci_parse($conn, $sql);
           if($stid === false){
               $e = oci_error();
               Mage::throwException(htmlentities($e['message'], ENT_QUOTES));
           }
     
           $curs = oci_new_cursor($conn);
           oci_bind_by_name($stid, ":rc", $curs, -1, OCI_B_CURSOR);
     
           if(oci_execute($stid) === false){
               $e = oci_error();
               Mage::throwException(htmlentities($e['message'], ENT_QUOTES));
           }
     
           if(oci_execute($curs) === false){
               $e = oci_error();
               Mage::throwException(htmlentities($e['message'], ENT_QUOTES));
           }
     
            $this->_showResultsTable($curs, 'oci');
        }

    ( pour préciser, les données sont contenues dans la variable $curs, j'ai cachée le code de showResultsTable car il ne présente aucun intéret particulier, on parcours le curseur ligne par ligne avec la méthode oci_fetch_array($curs, OCI_ASSOC+OCI_RETURN_NULLS) et on accède aux données voulues dans le tableau associatif retourné par cette fonction ).

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

Discussions similaires

  1. Récupérer le code d'une erreur Oracle
    Par etoileDesNeiges dans le forum SQL
    Réponses: 6
    Dernier message: 04/10/2007, 10h22
  2. [Oracle] récupérer le HOST d'une connexion Oracle
    Par novice123 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 02/07/2007, 14h07
  3. Réponses: 4
    Dernier message: 30/05/2007, 11h17
  4. Réponses: 3
    Dernier message: 23/01/2007, 09h20
  5. récupérer les séquences d'une base oracle
    Par gloglo dans le forum Oracle
    Réponses: 5
    Dernier message: 11/10/2006, 14h41

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