0
votes

Mauvais arguments à l'intérieur de la fonction (Oracle)

J'ai une fonction de base: xxx

Quand je l'appelle, je reçois cela:

ora-06553: Pls-306: Nombre incorrect ou types d'arguments en appel à 't_owner'


0 commentaires

3 Réponses :


1
votes

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;


2 commentaires

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.



1
votes

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;


0 commentaires

0
votes

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é de retour . En conséquence, vous devez vous débarrasser de la deuxième argument et la convertir en une variable locale: xxx

d'aillout

  • Supprimer les citations autour de la variable TNAME Dans l'instruction SELECT, l'existence de l'argument n'aurait aucun sens. Parce que ne serait pas utilisé.
  • Définir des variables explicitement comme >
  • comme étant un mot clé réservé, j'ai remplacé table avec MyTable .

0 commentaires