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é
A voir également:

2 réponses

dna.factory Messages postés 29403 Date d'inscription   Statut Modérateur Dernière intervention   1 619
 
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
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
dna.factory Messages postés 29403 Date d'inscription   Statut Modérateur Dernière intervention   1 619
 
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
bouazizi06 Messages postés 18 Statut Membre > dna.factory Messages postés 29403 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
dna.factory Messages postés 29403 Date d'inscription   Statut Modérateur Dernière intervention   1 619 > 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
bouazizi06 Messages postés 18 Statut Membre > dna.factory Messages postés 29403 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
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