|
这个题目已经费了我将近一天的时间了,该休息一下了。
[php]
SQL> declare
2 ln number;
3 ld1 date;
4 ld2 date;
5 ls varchar2(8);
6 lt number := dbms_utility.get_time;
7 ex exception;
8 i number;
9 j number;
10 begin
11 ld1 := to_date('20080101', 'yyyymmdd');
12 i := 0;
13 loop
14 exit when i > 800;
15 j := -2400;
16 loop
17 exit when j > 2400;
18 if to_char(ld1 + i,'dd')= '02' then
19 i := i + 25;
20 end if;
21 if to_char(add_months(ld1 + i, j), 'yyyymmdd') <>
22 nvl(my_add_months(to_char(ld1 + i, 'yyyymmdd'), j), '*') then
23 dbms_output.put_line('Sorry: stop at p_date_string=' ||
24 to_char(ld1 + i, 'yyyymmdd') || ',p_months=' || j);
25 raise ex;
26 end if;
27 j := j + 1;
28 end loop;
29 i := i + 1;
30 end loop;
31 ln := 0;
32 for c in (select text
33 from user_source
34 where name = 'MY_ADD_MONTHS'
35 and type = 'FUNCTION') loop
36 ln := ln + nvl(lengthb(translate(c.text,
37 '*' || chr(9) || chr(10) || chr(13) ||
38 chr(32),
39 '*')),
40 0);
41 end loop;
42 lt := (dbms_utility.get_time - lt) / 100;
43 dbms_output.put_line('Congratulation ... Code Length: ' || ln ||
44 ' Bytes. Times: ' ||
45 to_char(to_date(to_char(lt, 'fm00000'), 'sssss'),
46 'hh24:mi:ss'));
47 exception
48 when ex then
49 null;
50 end;
51 /
Congratulation ... Code Length: 415 Bytes. Times: 00:00:10
PL/SQL 过程已成功完成。
.
[/php] |
|