报网站开发培训班品质好的衣服品牌
--编写一个存储过程,输入一个日期,判定其距离年底还有多少天
 create or replace procedure sp_end(i_date varchar2,o_end out varchar2)
 is
 --声明两个变量,v_end存放经过转化的年底日期,v_errm用来存放异常
 v_end  date;
 v_errm varchar2(50);
 begin
   if length(i_date)<>8 then
     dbms_output.put_line('输入的日期格式不正确,正确的格式为:yyyymmdd');
   end if;
   /*函数解析:to_date:日期转换函数;trunc:截断函数,'yyyy'表示按年份截断,则会返回当年的1月1号;
   add_months:月份加减函数,加11到12月份;last_day:跳到当月月底函数;
   经过这几个函数的转化,则输入的日期就会变成当年的12月31日;ceil:向上取整*/
   v_end:=last_day(add_months(trunc(to_date(i_date,'yyyy-mm-dd'),'yyyy'),11));
   --用年底的日期减去输入的日期,则会返回相差的天数
   o_end:=ceil(v_end-to_date(i_date,'yyyy-mm-dd'));
   dbms_output.put_line(to_date(i_date,'yyyy-mm-dd')||'距离年底还有'||o_end||'天');
   --异常处理
   exception
     when others then
       v_errm:=sqlerrm;
       dbms_output.put_line(v_errm);
 end sp_end;
--调用存储过程
 declare
 v_end varchar2(50);
 begin
   sp_end('20230330',v_end);
 end;

注:有不解的可以 留言。
