欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

使用PLSQL 打印日历

程序员文章站 2024-02-03 23:44:40
...

最近有些闲,看完了concept突然有种空虚的感觉。闲话不多说。 用PLSQL写了一个打印日历的功能。 create or replace package disp

最近有些闲,,看完了concept突然有种空虚的感觉。闲话不多说。

用PLSQL写了一个打印日历的功能。

create or replace package display_date is
procedure display_spec_mon (year number , month number) ;
end ;

create or replace package body display_date is
type t_conv_mon is table of varchar2(10) ;
conv_mon t_conv_mon := t_conv_mon() ;
procedure display_title (year number , month number)
is
begin
dbms_output.put_line(year||'.'||conv_mon(month)) ;
dbms_output.put_line(lpad(' ',21,'-')) ;
dbms_output.put_line('Su Mo Tu We Th Fr Sa');
end ;
procedure display_spec_mon (year number , month number)
is
current_mon date ;
current_line varchar2(21) ;
begin
-- dbms_output.put_line (year||lpad(month||'',2,'0')||'01') ;
display_title (year,month) ;
current_mon := to_date(year||lpad(month||'',2,'0')||'01','yyyymmdd') ;
for i in 1 .. (add_months(current_mon,1)-current_mon) loop
if i = 1 then
current_line := current_line || (lpad(' ',(to_char(current_mon+i-1,'D')-1)*3,'-- '));
end if ;
current_line := current_line || rpad(i||'',3,' ');
if length(current_line)>=21 then
dbms_output.put_line(current_line) ;
current_line := '' ;
end if ;
end loop ;
dbms_output.put_line(current_line) ;
end ;


begin
conv_mon.extend(12);
conv_mon(1) := 'January' ;
conv_mon(2) := 'February' ;

conv_mon(3) := 'Marcy' ;
conv_mon(4) := 'April' ;

conv_mon(5) := 'May' ;
conv_mon(6) := 'June' ;

conv_mon(7) := 'July' ;
conv_mon(8) := 'August' ;

conv_mon(9) := 'September' ;
conv_mon(10) := 'October' ;

conv_mon(11) := 'November' ;
conv_mon(12) := 'December' ;
end ;

执行结果:

_sys@DAVID> exec display_date.display_spec_mon(2013,10) ;
2013.October
--------------------
Su Mo Tu We Th Fr Sa
-- -- 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31

PL/SQL procedure successfully completed.

_sys@DAVID> exec display_date.display_spec_mon(2012,12) ;
2012.December
--------------------
Su Mo Tu We Th Fr Sa
-- -- -- -- -- -- 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31

PL/SQL procedure successfully completed.

使用PLSQL 打印日历