Przede wszystkim uważam, że pakiet byłby nieprawidłowy, próbujesz dodać treść swojej funkcji w specyfikacji pakietu. Jednak cały pomysł jest dobry i powinien działać, jeśli zostanie wykonany prawidłowo, na przykład utwórz pakiet:
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;
Oraz treść pakietu:
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;
Następnie możesz wykonać wywołanie procedury:
begin
xyz.abc;
xyz.abc(); -- This is the same thing as above
xyz.abc(v_second_param => 'Maybe');
end;
Uwaga że jeśli wyślesz cokolwiek jako parametr dla v_first_parameter do tej procedury, użyje on wartości, którą wysłałeś, a nie wartości domyślnej.