J'ai une fonction de base: Quand je l'appelle, je reçois cela: p> ora-06553: Pls-306: Nombre incorrect ou types d'arguments en appel à 't_owner' p> p>
3 Réponses :
Les fonctions ne doivent pas avoir de paramètres; Ils retourne em> cette valeur quand même. Donc: declare
l_out table.owner%type;
begin
t_owner('table_test', l_out);
dbms_output.put_line(l_out);
end;
veuillez corriger la table_name = TNAME; alors fonctionne bien, merci de l'aide
Bah! Bien sûr, je copie / collé votre code et je n'ai pas remarqué que c'était faux. Fixé. Vous êtes les bienvenus.
Onamber code> doit être une variable locale, pas un paramètre de sortie et
TNAME code> ne doit pas être référencé sous forme de chaîne, mais un paramètre d'entrée.
create or replace function t_owner(tname in varchar2)
return varchar2
is
oname table.owner%type;
begin
select owner into oname
from table
where table_name = tname;
return oname;
end;
select t_owner('table_test') from dual;
une fonction est un sous-programme qui renvoie une valeur unique, il ne renvoie qu'une seule valeur de sortie, et il n'est donc pas nécessaire de définir comme argument, déjà signalé en utilisant le mot clé code> de retour code> . En conséquence, vous devez vous débarrasser de la deuxième argument et la convertir en une variable locale: em> d'aillout p>
TNAME code> Dans l'instruction SELECT, l'existence de l'argument n'aurait aucun sens. Parce que ne serait pas utilisé. Li>
table code> avec
MyTable code>. Li>
ul> p>