--2013-10-17 练习题
--1、输入一个年份,判断其是不是闰年,并做相应的提示。
--方法一:正常算
declare
v_year number := 1900;
begin
if mod(v_year,100) = 0 then
if mod(v_year,400) = 0 then
dbms_output.put_line(v_year || '是闰年');
else
dbms_output.put_line(v_year || '是平年');
end if;
else
if mod(v_year,4) = 0 then
dbms_output.put_line(v_year || '是闰年');
else
dbms_output.put_line(v_year || '是平年');
end if;
end if;
end;
--方法二:last_day
declare
v_year number := 2011;
begin
case to_char(last_day(to_date(v_year || '02','yyyymm')),'dd')
when 28 then dbms_output.put_line(v_year || '是平年');
when 29 then dbms_output.put_line(v_year || '是闰年');
else null;
end case;
end;
--方法三:一年总天数
declare
v_year number := 2000;
begin
case to_date(v_year||'-12-31','yyyy-mm-dd')-to_date(v_year||'-01-01','yyyy-mm-dd') + 1
when 365 then dbms_output.put_line(v_year || '是平年');
when 366 then dbms_output.put_line(v_year || '是闰年');
else null;
end case;
end;
--2、输入一个月份,判断此月有多少天。
declare
v_year number := &year;
v_month number := &month;
begin
dbms_output.put_line(v_year || ' 年 ' || v_month || ' 月有 ' ||
to_char(last_day(to_date(v_year || v_month,'yyyymm')),'dd') || '天');
end;
--3、打印当前月份的日历表。
--已作
--http://blog.163.com/arrowsc/blog/static/2188332032013917534727
--4、用while循环打印如下三角形。
--*
--**
--***
--****
--*****
--******
--*******
--********
declare
v_i number := 1;
v_j number := 1;
begin
while v_i <= 8 loop
--dbms_output.put_line(v_i);
while v_j > 0 loop
dbms_output.put(v_i);
v_j := v_j - 1;
end loop;
dbms_output.put_line('');
v_i := v_i + 1;
v_j := v_i;
end loop;
end;
--5、用for循环打印九九乘法表。
--已作
--http://arrowsc.blog.163.com/blog/static/218833203201391110338723/