La fonction ne raméne aucune valeur

bouazizi06 Messages postés 18 Statut Membre -  
 elmahdi -
Bonjour,

j'ecrits une fonction pl/sql sur oracle9 , je rencontre cette erreur:

ORA-06503: PL/SQL : La fonction ne ramène aucune valeur

n'hesiter pas de me donné une idé
Configuration: Windows XP
Internet Explorer 6.0

2 réponses

  1. dna.factory Messages postés 19915 Date d'inscription   Statut Modérateur Dernière intervention   1 621
     
    au hasard je dirais que ta fonction (une fonction doit obligatoirement retourner une et une seule valeur, par opposition à une procédure qui peut en retourner aucune ou plusieurs) ne ramène aucune valeur alors qu'elle devrait en ramener une.

    Après, le message d'erreur est peut-etre codé le fourbe.
    0
  2. bouazizi06 Messages postés 18 Statut Membre
     
    exécuse moi parce que je te donne le message mal rédiger

    à propos le probléme je ne vois pas que la fonction ne retourne rien, voici le code :

    funcion f1 ( var1 in varchar2, var2 in varchar,.......var36 in varchar2) return integer is

    begin

    varlocal tab1.ch1%type;

    insert into tab1( ch1,.......ch36)
    values( var1,.............var21)returning ch1 into varlocal

    insert into tab2(ch11, ...ch14)
    values(var11,......varlocal);

    return 0;
    end f1;
    0
    1. dna.factory Messages postés 19915 Date d'inscription   Statut Modérateur Dernière intervention   1 621
       
      mes souvenirs datent un peu, et je ne connais pas ce langage, mais quel est l'intéret d'une fonction qui retourne juste 0
      dans ce cas, autant utiliser le chiffre directement

      je pense qu'ici tu as besoin d'une procédure, pour retourner toutes les valeurs modifiées
      0
      1. bouazizi06 Messages postés 18 Statut Membre > dna.factory Messages postés 19915 Date d'inscription   Statut Modérateur Dernière intervention  
         
        funcion f1 ( var1 in out varchar2, var2 in varchar,.......var36 in varchar2) return integer is

        begin

        varlocal tab1.ch1%type;


        insert into tab1( ch1,.......ch36)
        values( nvl(var1, '*'),.............var21)returning ch1 into var1


        insert into tab2(ch11, ...ch14)
        values(var11,......var1);

        return 0;
        end f1;


        ici nvl(var1, '*') sivar1 null alors var1 est générer automatiqument par la base de donné, il lui donne un valeur de type varchar, et je veux récupérer ce code et l'inserer dans la table tab2.
        0
      2. dna.factory Messages postés 19915 Date d'inscription   Statut Modérateur Dernière intervention   1 621 > bouazizi06 Messages postés 18 Statut Membre
         
        je ne connais pas les bases de données et autres, mais si ça fonctionne comme les autres langage, je trouve surprenant qu'il soit possible de modifier les infos de la base de données avec une fonction
        essaye de remplacer cette fonction par une procédure (si c'est possible avec oracle)
        0
      3. bouazizi06 Messages postés 18 Statut Membre > dna.factory Messages postés 19915 Date d'inscription   Statut Modérateur Dernière intervention  
         
        je ne peux pas faire une procédure, il faut étre une fonction.

        merci pour cette discution, et j'essayera de trouver une solution
        0
      4. elmahdi > bouazizi06 Messages postés 18 Statut Membre
         
        salut,

        le message d'erreur, lier a votre select qui retourn rien, pour éviter ce problème il faut pensser a gerer les exception : ajouter juste avant la fin de la fonction

        Exception
        When No_data_found Then
        Dbms_output.Put_line('Erreur 1');
        When Others Then
        Dbms_output.Put_line('Erreur 2');
        0