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

Sql*Plus Oracle Discussion :

[débutante] Exécuter une fonction


Sujet :

Sql*Plus Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Février 2007
    Messages
    406
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 406
    Par défaut [débutante] Exécuter une fonction
    salut à tous,
    voila tout d'abord désolée si c'est une question de debutant, j'ai cherché sur le net j'ai trouvé:
    ~select mafonction(parametres) from dual;
    msg d'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ERREUR à la ligne 1 :
    ORA-00904: Nom de colonne non valide
    ~EXPLAIN ANALYZE SELECT nom_fonction()
    msg d'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ERREUR à la ligne 1 :
    ORA-00905: Mot-clé absent
    ~ var h varchar2;
    execute h:=affiche_date('aaaa');
    print h;
    msq d'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ERREUR à la ligne 1 :
    ORA-06550: Ligne 1, colonne 7 :
    PLS-00201: l'identificateur 'H' doit être déclaré
    ORA-06550: Ligne 1, colonne 7 :
    PL/SQL: Statement ignored
    tout ceci pour une toute petite fonction qui retourne une date entré!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    create or replace function affiche_date1(date in varchar2) return varchar2
    is
    begin
    return(date);
    end affiche_date1;
    voila je bloque la deussus merci de m'aider!

  2. #2
    Membre émérite Avatar de Yorglaa
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    845
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 845
    Par défaut
    salut,
    1. comment est-ce que tu entres ta date en paramètre ?
    2. es-tu sûre que ta fonction compile correctement ? parce que le mot "date" est normalement un mot réservé de Oracle...

  3. #3
    Membre éclairé
    Inscrit en
    Février 2007
    Messages
    406
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 406
    Par défaut
    merci yorglaa pour la reponse, j'ai essayé avec ceci pour eviter les problemes puisque date est un mot reservé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CREATE OR REPLACE FUNCTION affiche_da(da IN varchar2) RETURN varchar2
    IS
    begin
    RETURN(da);
    end affiche_da;
    resultat:
    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
    SQL> r
      1  CREATE OR REPLACE FUNCTION affiche_da(da IN varchar2) RETURN varchar2
      2  IS
      3  begin
      4  RETURN(da);
      5* end affiche_da;
     
    Fonction créée.
     
    SQL> var h varchar2;
    SQL> execute:h:=affiche_da('chaine');
    BEGIN :h:=affiche_da('chaine'); END;
     
    *
    ERREUR à la ligne 1 :
    ORA-06502: PL/SQL : erreur numérique ou erreur sur une valeur: tampon de chaîne
    de caractères trop petit
    ORA-06512: à ligne 1
     
     
    SQL>
    une idée?
    merci

  4. #4
    Rédacteur

    Homme Profil pro
    Développeur et DBA Oracle
    Inscrit en
    Octobre 2006
    Messages
    878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur et DBA Oracle

    Informations forums :
    Inscription : Octobre 2006
    Messages : 878
    Par défaut
    Salut,

    Il faut preciser la taille de ta variable c-a-d :
    var h varchar2(200)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SQL> select affiche_da('chaine') from dual ;
     
    AFFICHE_DA('CHAINE')
    -------------------------------------------------------------------------
    chaine
     
    SQL>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    SQL> var h varchar2(2000)
    SQL>  begin
      2  :h:=affiche_da('chaine');
      3  dbms_output.put_line(:h);
      4  end ;
      5  /
    chaine
     
    PL/SQL procedure successfully completed.
     
    SQL>

  5. #5
    Membre éclairé
    Inscrit en
    Février 2007
    Messages
    406
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 406
    Par défaut
    super, merci bcp salim11

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

Discussions similaires

  1. [Débutant]Comment exécuter une fonction tous les jours
    Par pseudomh dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 21/06/2006, 16h10
  2. Exécuter une fonction sur le onchange d'un select
    Par Lung dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 20/06/2006, 15h05
  3. Réponses: 5
    Dernier message: 28/04/2006, 14h40
  4. Est-il possible d'exécuter une fonction à partir de fichier
    Par magic8392 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 8
    Dernier message: 16/09/2005, 13h59
  5. [VB.NET] Exécuter une fonction VB sur un Datagrid
    Par MiJack dans le forum Windows Forms
    Réponses: 3
    Dernier message: 24/09/2004, 14h45

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