Първо, мисля, че този пакет би бил невалиден, вие се опитвате да добавите тяло за вашата функция в спецификацията на вашия пакет. Цялата идея обаче е добра и трябва да работи, ако е направено правилно, например създайте пакет:
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;
И тяло на пакета:
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;
Тогава може да искате да направите извикване на вашата процедура:
begin
xyz.abc;
xyz.abc(); -- This is the same thing as above
xyz.abc(v_second_param => 'Maybe');
end;
Моля, обърнете внимание че ако изпратите нещо като параметър за v_first_parameter на тази процедура, тя ще използва изпратената от вас стойност, а не тази по подразбиране.