Oracle
 sql >> Database >  >> RDS >> Oracle

Parametro predefinito nella procedura Oracle

Prima di tutto, penso che quel pacchetto non sarebbe valido, stai cercando di aggiungere un corpo per la tua funzione nelle specifiche del tuo pacchetto. Tuttavia l'intera idea è buona e dovrebbe funzionare, se fatta bene, ad esempio, crea un pacchetto:

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 un corpo del pacchetto:

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;

Quindi potresti voler effettuare la chiamata della tua procedura:

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

Nota che se invii qualcosa come parametro per v_first_parameter a quella procedura, utilizzerà il valore che hai inviato e non quello predefinito.