sql >> Base de Datos >  >> RDS >> Oracle

Parámetro predeterminado en el procedimiento de Oracle

En primer lugar, creo que el paquete no sería válido, está intentando agregar un cuerpo para su función en la especificación de su paquete. Sin embargo, toda la idea es buena y debería funcionar, si se hace bien, por ejemplo, cree un paquete:

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;

Y un cuerpo de paquete:

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;

Entonces es posible que desee realizar la llamada de su procedimiento:

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

Tenga en cuenta que si envía algo como parámetro para v_first_parameter a ese procedimiento, utilizará el valor que envió y no el predeterminado.