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 :

Variables liées PHP / PL\SQL


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 17
    Par défaut Variables liées PHP / PL\SQL
    Bonjour,
    Je vous expose mon soucis:
    [Ne vous demandez pas l'utilité profonde de ce qui va suivre, c'est juste du teste]

    J'ai créé une procédure bidon via PHP:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    create or replace
    procedure Tist
      (
        Calcu   in out test2.ville%type,
        Valeurs in out test2.numero%type)
    as
    begin
      Calcu:='Londres';
      select numero into Valeurs from test2 where ville = Calcu;
     
      Valeurs := mod(Valeurs,4);
      dbms_output.put_line(Calcu || ' ' || Valeurs);
    end;
    [j'indente la code, c'est tellement plus agréable à lire, mais a noter que PHP n'aime pas ça]

    Maintenant j'aimerais récupérer les variables Calcu et Valeurs, j'ai essayé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $plsql="begin Tist(:Calcu,:Valeurs); end;";
    $s= oci_parse($c1, $plsql);
     
    #Liaison des variables oracle et php
    OCI_Bind_By_Name ($s, ":Calcu", $cal , -1);
    OCI_Bind_By_Name ($s, ":Valeurs", $val , -1);
    $r=oci_execute($s);
    echo $cal." | ". $val;
    oci_free_statement($s);
    Voici le résultat:
    Warning: oci_execute() [function.oci-execute]: ORA-06502: PL/SQL : erreur numérique ou erreur sur une valeur: tampon de chaîne de caractères trop petit ORA-06512: à "***.TIST", ligne 1 ORA-06512: à ligne 1 in C:\*** on line 16
    |
    Seulement, Calcu est de type ville i.e VARCHAR[50] et Valeurs de type numero i.e NUMBER[4,0]

    Si quelqu'un à une idée de solution?
    Je continue a chercher de mon coté

    D'avance, merci

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 17
    Par défaut
    Un début de solution:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $val;
    $cal = "                       ";
    include('connexion.php');
    $plsql="begin Tist(:Calcu,:Valeurs); end;";
    $s= oci_parse($c1, $plsql);
     
    #Liaison des variables oracle et php
    OCI_Bind_By_Name ($s, ":Calcu", $cal);
    OCI_Bind_By_Name ($s, ":Valeurs", $val);
    $r=oci_execute($s);
    Voila, ça fonctionne! Mais c'est pas très pratique de devoir déclarer une chaine de caractere > ou = a la variable oracle...
    An other solution?

Discussions similaires

  1. Variable JS dans requête SQL PHP
    Par miabi dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 08/11/2010, 13h28
  2. variable liée PL/SQL
    Par root16 dans le forum PL/SQL
    Réponses: 2
    Dernier message: 01/04/2010, 12h27
  3. [SQL] Erreur variables html/php
    Par Ragnarok85 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 19/05/2007, 20h52
  4. [SQL] problème de variable tableau PHP contenant les données d'une jointure SQL
    Par Schpountz42 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 09/02/2007, 05h59
  5. Nom de champ variable dans une requête SQL
    Par stip dans le forum ASP
    Réponses: 2
    Dernier message: 30/09/2004, 18h02

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