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

Oracle Discussion :

passage paramétre IN Procedure oracle en PHP


Sujet :

Oracle

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 154
    Points : 84
    Points
    84
    Par défaut passage paramétre IN Procedure oracle en PHP
    Bonjour

    Je voudrais s'il vous plais avoir une information concernant le passage des paramètres d'un procedure stockée dans oracle .

    En effet, sur toad j'exécute la procédure comme suit ,SANS SOUCI , avec le resultat souhaité (ecriture dans un table..)
    Code sql : 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
     
    Declare  
    --p_trayno  NUMBER;
    p_trame_1 VARCHAR2(255);
    p_trame_2 VARCHAR2(255);
    p_trame_3 VARCHAR2(255);
    p_trame_4 VARCHAR2(255);
    p_trame_exp1 VARCHAR2(255);
    p_trame_exp2 VARCHAR2(255);
    p_trame_exp3 VARCHAR2(255);
    p_trame_exp4 VARCHAR2(255);
    p_msg VARCHAR2(255);
     
    p_tray  NUMBER := 35764;
    begin
     
     
    PDL.Pr_envoi (
                             p_tray ,
                              p_trame_1 ,
                              p_trame_2 ,
                              p_trame_3 ,
                              p_trame_4 ,
                              p_trame_exp1 ,
                              p_trame_exp2 ,
                              p_trame_exp3 ,
                              p_trame_exp4 ,
                              p_msg) ;
     
                              end;
                              /
     commit;
    En fait à l'exception de p_tray qui est un parametre IN tout les autres sont des parametre de sorties OUT..

    Mon problème en fait survient lorsque je dois appeler la procedure en PHP :
    Voici le bout du code concerné.
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    $req_ecrire=
    "
    Begin PDL.pr_envoi(:tray_no,:p_trame_1,:p_trame_2,:p_trame_3,
    :p_trame_4,:p_trame_exp1,:p_trame_exp2,
    :p_trame_exp3,:p_trame_exp4); end;commit;";
     
    $stmt_ecrire = OCIParse($conn,$req_ecrire);
    oci_bind_by_name($stmt_ecrire ":tray_no", $tray_no, 8); // in parameter
    oci_execute($stmt_ecrire);

    Voici le message d'erreur que j 'obtiens :



    Warning: oci_execute() [function.oci-execute]: ORA-06550: line 1, column 1: PLS-00103: Encountered the symbol "" when expecting one of the following: begin case declare exit for function goto if loop mod null package pragma procedure raise return select separate type update while with <identificateur> <identificateur entre guillemets> <variable bind> << form table call close current define delete fetch lock insert open rollback savepoint set sql execute commit forall merge library OPERATOR_ pipe The symbol "" was ignored. ORA-0655

    En fait j en ai besoin de passer que le premier parametre de la procedure (mais dois -je mentionner les autres en OUT???).


    Merci d'avance pour toute aide ou suggestion.

    Amicalement

  2. #2
    Membre confirmé

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    507
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 507
    Points : 503
    Points
    503
    Par défaut
    Bonjour.
    Essayez en remplaçant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $req_ecrire=
    "
    Begin PDL.pr_envoi(:tray_no,:p_trame_1,:p_trame_2,:p_trame_3,
    :p_trame_4,:p_trame_exp1,:p_trame_exp2,
    :p_trame_exp3,:p_trame_exp4); end;commit;";
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $req_ecrire=
    "
    exec PDL.pr_envoi(:tray_no,:p_trame_1,:p_trame_2,:p_trame_3,
    :p_trame_4,:p_trame_exp1,:p_trame_exp2,
    :p_trame_exp3,:p_trame_exp4); commit;";

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 154
    Points : 84
    Points
    84
    Par défaut
    Bonjour

    Merci GoLDoZ pour ton message :

    voila lorsque j'ai remplacer l'ancienne requette par :


    $req_ecrire=
    "
    exec PDL.pr_envoi('35764',:p_trame_1,:p_trame_2,:p_trame_3,
    :p_trame_4,:p_trame_exp1,:p_trame_exp2,
    :p_trame_exp3,:p_trame_exp4); commit;";
    je n ai pas d'erreur d'execution , par contre en effectuant une recherche dans les tables , je me rend compte qu'il n yas pas eu d''execution , j'ai essayer aussi sans 'exec ' mais meme resultat.
    Alors que sur toad j'ai bien le resultat de l'execution avec la meme requette..

    auriez vous une idée svp??




    Amicalement

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 154
    Points : 84
    Points
    84
    Par défaut
    Bonjour
    En fait c'est du à quoi le message d'erreur suivant :


    Encountered the symbol "" when expecting one of the following: begin case declare exit for function goto if loop mod null package pragma procedure raise return select separate type update while with <identificateur> <identificateur entre guillemets> <variable bind> << form table call close current define delete fetch lock insert open rollback savepoint set sql execute commit forall merge library OPERATOR_ pipe The symbol "" was ignored. ORA-0655



    Merci
    AMICALEMENT

  5. #5
    Membre confirmé

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    507
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 507
    Points : 503
    Points
    503
    Par défaut
    C'est une erreur de syntaxe.
    Quand vous écrivez "Begin PDL.pr_envoi(:tray_no,:p_trame_1...", le saut de ligne n'est pas interprété, il considère que c'est une seule commande.

    Essayez sans le commit, juste
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $req_ecrire=
    "
    execute PDL.pr_envoi(:tray_no,:p_trame_1,:p_trame_2,:p_trame_3,
    :p_trame_4,:p_trame_exp1,:p_trame_exp2,
    :p_trame_exp3,:p_trame_exp4);";

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 154
    Points : 84
    Points
    84
    Par défaut
    Bonjour GoLDoZ

    Oui c'est bien cela,, j'avais supprimé le suat de ligne et ça marché... meme si cela m'étonne ..car j'ai l'habitude d'écrire une requette sur plusieurs ligne sans problème Mais apparamment lorsqu'il s'agit d'appel d'une procédure ce n'est valable... je me demande si ce n'est un bug oracle!!!


    Merci pour ta réponse.

  7. #7
    Membre confirmé

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    507
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 507
    Points : 503
    Points
    503
    Par défaut
    Dans ta chaîne de connexion, il n'y a pas de saut de ligne, juste un espace après le begin.
    Et il me semble le saut de ligne n'est pas un caractère que l'on peut passer en paramètre.

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

Discussions similaires

  1. Passage paramètres Php vers Vbs
    Par Travailleuuse06 dans le forum VBScript
    Réponses: 1
    Dernier message: 04/09/2006, 20h31
  2. Passage paramètres à une page PHP
    Par linar009 dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 04/09/2006, 14h34
  3. Réponses: 5
    Dernier message: 23/08/2006, 21h51
  4. [PHP-JS] Passage de paramètre de Javascript vers fonction Php
    Par winnie82 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 13/07/2006, 10h06
  5. Problème de passage de paramètres à une procedure
    Par momo62 dans le forum x86 16-bits
    Réponses: 2
    Dernier message: 22/12/2005, 15h22

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