Först och främst tror jag att det paketet skulle vara ogiltigt, du försöker lägga till en body för din funktion i din paketspecifikation. Men hela idén är bra och den borde fungera, om det görs rätt, skapa till exempel ett 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;
Och en pakettext:
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;
Då kanske du vill ringa din procedur:
begin
xyz.abc;
xyz.abc(); -- This is the same thing as above
xyz.abc(v_second_param => 'Maybe');
end;
Observera att om du skickar något som en parameter för v_first_parameter till den proceduren kommer det att använda värdet du skickade och inte standardvärdet.