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

PL/SQL Oracle Discussion :

paramètre de procédure out


Sujet :

PL/SQL Oracle

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 148
    Par défaut paramètre de procédure out
    bonjour j'ai une procédure qui reçoit en paramètre un varchar2 en out ce qui permet donc sa modification au sein de la procédure,seulement voila dans ma procédure j'affecte une nouvelle valeur à ma chaine il me dis rien lors de la compil mais quand je l'exécute il me dit que ma chaine ne peut pas être utilisée comme cible d'affectation Pourriez vous m'éclairer?? merci

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 136
    Par défaut
    on peut voir ton code?

  3. #3
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    Pas de problème.Peut-être une erreur dans votre code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CREATE OR REPLACE PROCEDURE proc_test (p OUT VARCHAR2) IS
    BEGIN
       p := 'coucou' ;
    END proc_test;
    /
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    SQL> set serveroutput on
    SQL> DECLARE
      2   v VARCHAR2(100);
      3  BEGIN
      4    proc_test(v);
      5    DBMS_OUTPUT.PUT_LINE(v);
      6  END;   
      7  
      8  /
    coucou
     
    Procédure PL/SQL terminée avec succès.
     
    SQL>

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 148
    Par défaut
    voici mon code de test-->
    create or replace procedure test (param out varchar2) is
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    begin
    param:='bonjour';
    dbms_output.put_line(param);
    end;
    j'appelle ma proc avec par exemple 'merci' en paramètre et quand j'exécute il me dit que merci ne peut avoir d'affectation merci de votre aide

  5. #5
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    Citation Envoyé par chris_013 Voir le message
    plus personne pour m'aider??
    Et si vous donniez aussi le code de l'appel de cette procédure?

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 136
    Par défaut
    Chez moi ça marche.

    Dans l'appel, tu fais
    ???

    Si oui c'est normal que ça ne marche pas, il faut passer une variable et pas une constante.... (regarde le code d'appel de SheikYerbouti)

  7. #7
    Invité de passage
    Inscrit en
    Octobre 2009
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 1
    Par défaut qui est IN, qui est OUT ?
    pour pouvoir passer une chaine en paramètre à ta fonction, il faut déclarer le paramètre en IN.

    Ainsi, tu peux appeler Ma_Fonction( 'coucou') ;

    Si ton paramètre est en OUT, tu peux le modifier dans la fonction mais tu dois le retourner absolument dans une variable. Ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Declare
    Ma_chaine varchar2(1000);
    Begin
    Ma_Fonction(Ma_Chaine);
    Dbms_Output.Put_Line( 'ma chaine vaut' || Ma_chaine );
    End;
    /
    Je pense que tu essayes de passer une valeur "en dur" ('coucou') dans un paramètre OUT qui demande une variable...

  8. #8
    Membre actif Avatar de h472009
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Août 2009
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Service public

    Informations forums :
    Inscription : Août 2009
    Messages : 86
    Par défaut
    tu doit soit le mettre en IN pour qu'il soit modifié, soit au lieu d'une procédure utiliser une fonction et retourner la valeur en sortie.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    CREATE OR REPLACE function func_test () IS
    declare 
    c=varchar(20);
    BEGIN
     c := 'coucou' ;
    return c;
     
    END func_test;
    lors de l'apel:


Discussions similaires

  1. Lister les paramètres des procédures d'un schéma
    Par raoulbranche dans le forum Oracle
    Réponses: 4
    Dernier message: 20/09/2006, 12h27
  2. Opérateur comme paramètre de procédure
    Par Xuyvox dans le forum Langage
    Réponses: 6
    Dernier message: 18/05/2006, 13h55
  3. Paramètres sur Procédure stockée
    Par StarMusic dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 22/03/2006, 14h58
  4. passer un nom de champs en paramètre de procédure stockée
    Par dor_boucle dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 06/02/2006, 19h10
  5. Suppression de paramètre pour procédure stockée dans le code
    Par 24 faubourg dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 04/01/2006, 10h51

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