|
hotiice的代码中有一行比较有意思
原帖由 hotiice 于 2008-5-26 08:31 发表 ![]()
SQL> CREATE OR REPLACE FUNCTION MY_ADD_MONTHS(P_DATE_STRING VARCHAR2, P_MONTHS NUMBER)
2 RETURN VARCHAR2 AS
3 SUBTYPE I IS INT;
4 N I:=P_DATE_STRING;
5 C I:=100;
6 D I:=MOD(N,C);
7 Y I:=N/C/C;
8 M I:=MOD(N/C,C);
9 Z I:=M+P_MONTHS;
10 FUNCTION F(Y I,M I) RETURN I
11 AS
12 BEGIN
13 RETURN 31-CASE
14 WHEN M!=2 THEN mod(floor(330/power(2,12-m)),2)
15 WHEN MOD(Y,16)=0 OR MOD(Y,4)=0 AND MOD(Y,C)>0 THEN 2
16 ELSE 3
17 END;
18 END;
19 BEGIN
20 N:=mod(y*12+z-1,12)+1;
21 Z:=Y+(Z-N)/12;
22 IF D=F(Y,M) OR D>F(Z,N) THEN
23 D:=F(Z,N);
24 END IF;
25 RETURN Z*C*C+N*C+D;
26 END;
27 /
函数已创建。
SQL> exec test_add
Congratulation ... Code Length: 415 Bytes. Times: 00:00:08 |
|