Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Standardparameter in Oracle-Prozedur

Zunächst einmal denke ich, dass das Paket ungültig wäre, Sie versuchen, Ihrer Paketspezifikation einen Körper für Ihre Funktion hinzuzufügen. Die ganze Idee ist jedoch gut und sollte funktionieren, wenn sie richtig gemacht wird, erstellen Sie zum Beispiel ein Paket:

create or replace package xyz is

  procedure abc(v_frst_param in varchar2 default 'Y');

  procedure abc(v_frst_param in varchar2 default 'Y', v_second_param in varchar2);

end xyz;

Und ein Paketkörper:

create or replace package body xyz is

procedure abc(v_frst_param in varchar2 default 'Y') is
  begin  
    dbms_output.put_line(v_frst_param);  
  end;

procedure abc(v_frst_param in varchar2 default 'Y', v_second_param in varchar2) is
  begin  
    dbms_output.put_line(v_frst_param || ' / ' || v_second_param);  
  end;

end xyz;

Dann möchten Sie vielleicht den Aufruf Ihrer Prozedur machen:

begin
  xyz.abc;
  xyz.abc(); -- This is the same thing as above
  xyz.abc(v_second_param => 'Maybe');
end;

Bitte beachten dass, wenn Sie irgendetwas als Parameter für v_first_parameter an diese Prozedur senden, es den Wert verwendet, den Sie gesendet haben, und nicht den Standardwert.