Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Parâmetro padrão no procedimento oracle


Antes de tudo, acho que esse pacote seria inválido, você está tentando adicionar um corpo para sua função na especificação do seu pacote. No entanto a ideia toda é boa e deve funcionar, se bem feita, por exemplo, crie um pacote:
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;

E um corpo de pacote:
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;

Então você pode querer fazer a chamada do seu procedimento:
begin
  xyz.abc;
  xyz.abc(); -- This is the same thing as above
  xyz.abc(v_second_param => 'Maybe');
end;

Observe que se você enviar qualquer coisa como parâmetro para v_first_parameter para esse procedimento, ele usará o valor que você enviou e não o padrão.