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

Interfaces de programmation Oracle Discussion :

[ORACLE 8i] ORA-01036 / oci bind by name pour string


Sujet :

Interfaces de programmation Oracle

  1. #1
    Futur Membre du Club
    Inscrit en
    Juillet 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 6
    Points : 6
    Points
    6
    Par défaut [ORACLE 8i] ORA-01036 / oci bind by name pour string
    Bonjour,

    Après avoir cherché dans pas mal d'endroits y compris dans la doc oracle, je trouve pas de solution... donc voilà le probleme:

    Pour economiser des ressources de la base de données, je veux utiliser le binding (c'est pas très français mais bon)...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $stmt = OCIParse ($conn, $sql);
     
    $prodcode = 717011;
    $chaine = "CARW";
     
    OCIBindByName($stmt, ":nombre", $prodcode);
    OCIBindByName($stmt, ":chaine", $ttexcode);
     
    OCIExecute($stmt, OCI_DEFAULT);
    J'ai pas de souci pour le OCIBindByName si je renseigne un numérique, mais si c'est une chaine de caractère, je me prends l'erreur ORA-01036: numéro/nom de variable illégal à la ligne du OCIBindByName pour la chaine.
    Peut etre y'a il un type à préciser, mais j'ai pas trouvé...

    J'espère que j'ai été clair, c'est ma première participation dans ce forum,

    Merci à tous pour votre aide

    PS: Versions ->
    Oracle 8i Release 8.1.7.0.0 - Production
    PHP 4.3.3

  2. #2
    Membre expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Points : 3 597
    Points
    3 597
    Par défaut
    Quel est le contenu de:

    Donnez-nous le code complet avec le contenu de $sql.

  3. #3
    Futur Membre du Club
    Inscrit en
    Juillet 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    Hum... pardon, erreur de c/c tout à l'heure, voila la requête, et le résultat obtenu:

    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
     
    $sql  = "SELECT count(*) ";
    $sql .= "FROM ";
    $sql .= "V_OUVRAGE vof, V_CONTRIBUTEUR vcf ";
    $sql .= "WHERE ";
    $sql .= "vof.CODE_ARTICLE = vcf.CODE_ARTICLE ";
    $sql .= "AND ";
    $sql .= "vcf.CODE_NATURE IN (20,21) ";
    $sql .= "AND ";
    $sql .= "vcf.NOM_CONTRIBUTEUR_APPAUV LIKE '".":chaine"."%' ";
    $sql .= "AND ";
    $sql .= "vof.TITRE_APPAUVRI IS NOT NULL ";
    $sql .= "AND ";
    $sql .= "vof.EDIG_IDENT= :nombre";
     
    $stmt = OCIParse ($conn, $sql);
     
    $prodcode = 76;
    $ttexcode = "A";
     
    OCIBindByName($stmt, ":nombre", $prodcode);
    OCIBindByName($stmt, ":chaine", $ttexcode);
     
    OCIExecute($stmt, OCI_DEFAULT);
    PHP Warning: ocibindbyname(): OCIBindByName: ORA-01036: numéro/nom de variable illégal in D:\***\web\***\***\catalogue.php on line 118
    La ligne 118 c'est:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    OCIBindByName($stmt, ":chaine", $ttexcode);

  4. #4
    Membre expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Points : 3 597
    Points
    3 597
    Par défaut
    Essayez de supprimer les simples quotes dans:

    et de mettre le "%" et les "." dans:

    Il doit suffire d'avoir:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql .= "vcf.NOM_CONTRIBUTEUR_APPAUV LIKE :chaine ";

  5. #5
    Membre chevronné Avatar de Garuda
    Homme Profil pro
    Chef de projet / Urbaniste SI
    Inscrit en
    Juin 2007
    Messages
    1 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet / Urbaniste SI
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 285
    Points : 2 071
    Points
    2 071
    Par défaut
    Je dirais que pour une chaine, la longueur est obligatoire !
    Garuda गरूड
    Brahmâ la Guerre et Vishnu la Paix

    Oracle 12C R2 - Forms11GR2 - Toad 12 - sharePoint 2010

  6. #6
    Membre expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Points : 3 597
    Points
    3 597
    Par défaut
    Peut-être mais je ne pense pas que c'est la cause de ORA-01036:

    ORA-01036: illegal variable name/number
    Cause: Unable to find bind context on user side
    Action: Make sure that the variable being bound is in the sql statement.

  7. #7
    Membre chevronné Avatar de Garuda
    Homme Profil pro
    Chef de projet / Urbaniste SI
    Inscrit en
    Juin 2007
    Messages
    1 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet / Urbaniste SI
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 285
    Points : 2 071
    Points
    2 071
    Par défaut
    Ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql .= "vcf.NOM_CONTRIBUTEUR_APPAUV LIKE :chaine||'%' ";
    si chaine ne se termine pas par '%'
    Garuda गरूड
    Brahmâ la Guerre et Vishnu la Paix

    Oracle 12C R2 - Forms11GR2 - Toad 12 - sharePoint 2010

  8. #8
    Futur Membre du Club
    Inscrit en
    Juillet 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    Merci à vous deux, le problème est résolu , et sinon j'avais déjà testé de renseigner la longueur de la chaine dans OCIBindByName, mais ça avait pas marché.

    PS: Effectivement, Garuda, c'est pas mal ça...

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 02/03/2012, 13h21
  2. ORA-01036: illegal variable name/number
    Par yupa dans le forum SQL
    Réponses: 1
    Dernier message: 01/02/2008, 12h15
  3. Problème Oracle [ora-01036 illegal variable name/number]
    Par Aumélisse dans le forum ASP.NET
    Réponses: 7
    Dernier message: 14/08/2007, 12h36
  4. Erreur oracle : ORA-01036
    Par freestyler1982 dans le forum Oracle
    Réponses: 1
    Dernier message: 14/11/2006, 10h29
  5. Erreur ORA-01036 sur un XMLGRAM
    Par sch dans le forum XMLRAD
    Réponses: 5
    Dernier message: 07/09/2004, 14h56

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