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 :

PL/SQL : Modification de paramétres


Sujet :

PL/SQL Oracle

  1. #1
    Débutant
    Inscrit en
    Avril 2005
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 469
    Points : 106
    Points
    106
    Par défaut PL/SQL : Modification de paramétres
    Bonjour,

    Dans une fonction PL/SQL, j'ai un paramétre de type number.Et dans le cops de la fonction, je veux modifier le paramétre(un select INTO dans ce paramétre) et il me signe l'erreur suivante :

    Error: PLS-00403: l'expression 'D_UNITCOST' ne peut être utilisée comme cible INTO d'une instruction SELECT/FETCH[/COLOR]

    code :
    create or replace function sg_overcost_keep( pal_projectname varchar2,d_unitcost number)
    begin
    select decode(d_unitcost,null,0.0,d_unitcost) into d_unitcost from dual;
    end;


    J'ai mis d_unitcost comme out Number mais là au moment de l'appel, il me dit impossible d'appeler une fonction avec un paramétre out.

    Merci de me donner un coup de main


  2. #2
    Membre actif
    Inscrit en
    Mai 2004
    Messages
    297
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 297
    Points : 207
    Points
    207
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    create or replace function sg_overcost_keep( pal_projectname in varchar2,d_unitcost in out number)
    begin
    select decode(d_unitcost,null,0.0,d_unitcost) into d_unitcost from dual;
    end;


    ++

  3. #3
    Débutant
    Inscrit en
    Avril 2005
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 469
    Points : 106
    Points
    106
    Par défaut PL/SQL: retourner une lise de colonnes
    Oui, j'ai effectivemment mis le code(mettre les paramétres IN, et IN OUT).
    Mais dans une autre fonction où j'appelle cette fonction qui contient ces paramétres en IN et IN OUT, il me signale l'erreur :

    Error: PL/SQL: ORA-06572: Fonction SG_OVERCOST_KEEP sans arguments

  4. #4
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Une Fonction est un code qui renvoie une valeur par un return.
    Dans ton cas, c'est une procédure qu'il faut déclarer.

  5. #5
    Débutant
    Inscrit en
    Avril 2005
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 469
    Points : 106
    Points
    106
    Par défaut
    Oui, bien sur que cette fonction renvoie une valeur par return.je vous ai pas donné tout le code.Le probléme est que dans cette fonction je modifie un des paramétres spécifiés.

  6. #6
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Crées une procédure avec 1 param IN OUT pour ton param modifiable, et 1 param OUT pour ta valeur de return.

  7. #7
    Membre averti Avatar de Wurlitzer
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    469
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 469
    Points : 408
    Points
    408
    Par défaut
    Citation Envoyé par madina

    J'ai mis d_unitcost comme out Number mais là au moment de l'appel, il me dit impossible d'appeler une fonction avec un paramétre out.
    Je crois que l'on peut mettre des parametres en OUT dans une fonction le problème est je pense que tu l'appelles dans un select.

    Dans ce cas il faut effectivment que des parametres en IN et un RETURN (ce qui est logique, où verait-on le resultat des parametres en OUT).

    Il faut donc utiliser une variable local
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    create or replace function sg_overcost_keep( pal_projectname in varchar2) is
    d_unitcost  number ;
    begin
    select decode(d_unitcost,null,0.0,d_unitcost) into d_unitcost from dual;
    return  d_unitcost
    end;

  8. #8
    Débutant
    Inscrit en
    Avril 2005
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 469
    Points : 106
    Points
    106
    Par défaut
    Effectivement, j'appelle la fonction dans un Select statement.Et le probléme est que la fonction est obligée de prendre d_unitcost en argument et ce d_unitcost est modifié au sein de cette fonction.

  9. #9
    Membre averti Avatar de Wurlitzer
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    469
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 469
    Points : 408
    Points
    408
    Par défaut
    C'est pas possible ! !

    Si tu veux avoir d_unitcost en paramtre il doit etre en IN.

    A quoi cela sert que ta fonction mette a jour d_unitcost alors que tu peux pas le récupérer ?

Discussions similaires

  1. [SQL] Modification de champs d'un tableau dynamique dans une base de données
    Par loreleï85 dans le forum PHP & Base de données
    Réponses: 18
    Dernier message: 27/06/2006, 17h55
  2. Modification des paramètres régionaux et folders options
    Par Looping_V60 dans le forum Access
    Réponses: 1
    Dernier message: 07/06/2006, 20h02
  3. Modifications de paramètres.
    Par gdpasmini dans le forum Windows
    Réponses: 5
    Dernier message: 10/05/2006, 15h45
  4. [SQL] Calcul sur paramètres
    Par Mitaka dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 03/11/2005, 15h25
  5. [PL/SQL] Curseur avec Paramètre
    Par blids dans le forum Oracle
    Réponses: 5
    Dernier message: 10/10/2004, 21h07

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