Escriba un procedimiento almacenado, ingrese una fecha y determine cuántos días faltan para que finalice el año

--Escriba un procedimiento almacenado, ingrese una fecha y determine cuántos días faltan para el final del año.
cree o reemplace el procedimiento sp_end(i_date varchar2,o_end out varchar2)
es
--declare dos variables, v_end almacena el final transformado -of-year date, y v_errm usa Para almacenar la excepción
v_end date;
v_errm varchar2(50);
begin
  if length(i_date)<>8 then
    dbms_output.put_line('El formato de fecha de entrada es incorrecto, el formato correcto es: aaaammdd ');
  end if;
  /*Análisis de función: to_date: función de conversión de fecha; trunc: función de truncamiento, 'yyyy' significa truncar por año, y devolverá el 1 de enero del año actual; add_months: función de suma y resta de mes,
  sumando noviembre a diciembre; last_day: saltar al final de la función del mes actual;
  después de la conversión de estas funciones, la fecha de entrada será el 31 de diciembre del año actual; ceil: redondear hacia arriba*/
  v_end:=last_day(add_months(trunc( to_date(i_date,'yyyy-mm-dd '),'yyyy'),11));
  --Reste la fecha de entrada de la fecha al final del año y devuelva la diferencia en días
  o_end:=ceil(v_end -to_date(i_date,'yyyy-mm-dd')) ;
  dbms_output.put_line(to_date(i_date,'yyyy-mm-dd')||'Todavía quedan días antes de que finalice el año'||o_end||'days'); -- excepción de manejo de excepción
  cuando
  otros
    v_errm
      : =sqlerrm;
      dbms_output.put_line (v_errm);
end sp_end;

--Llamar al procedimiento almacenado
declare
v_end varchar2(50);
begin
  sp_end('20230330',v_end);
end;

Nota: Si tiene alguna pregunta, puede dejar un mensaje.

Supongo que te gusta

Origin blog.csdn.net/lxslf/article/details/129850858
Recomendado
Clasificación