QUOTE:
原帖由
newkid 于 2008-9-10 03:54 发表

能否做几个 9I 下DETERMINISTIC函数的试验?
Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.1.0
Connected as scott
SQL>
SQL> create or replace package pkg
2 is
3 function get_n return number;
4 function inc_n return number deterministic;
5 procedure reset_n;
6 end;
7 /
Package created
SQL> create or replace package body pkg
2 is
3 g_n number;
4 function get_n return number
5 is
6 begin
7 return g_n;
8 end;
9
10 function inc_n return number deterministic
11 is
12 begin
13 g_n := g_n + 1;
14 return g_n;
15 end;
16
17 procedure reset_n
18 is
19 begin
20 g_n := 0;
21 end;
22 begin
23 g_n := 0;
24 end;
25 /
Package body created
SQL> exec pkg.reset_n;
PL/SQL procedure successfully completed
SQL> select pkg.inc_n from t;
INC_N
----------
1
1
1
SQL>
以下是在9i上:
Connected to Personal Oracle9i Release 9.2.0.1.0
Connected as scott
SQL>
SQL> create or replace package pkg
2 is
3 function get_n return number;
4 function inc_n return number deterministic;
5 procedure reset_n;
6 end;
7 /
Package created
SQL> create or replace package body pkg
2 is
3 g_n number;
4 function get_n return number
5 is
6 begin
7 return g_n;
8 end;
9
10 function inc_n return number deterministic
11 is
12 begin
13 g_n := g_n + 1;
14 return g_n;
15 end;
16
17 procedure reset_n
18 is
19 begin
20 g_n := 0;
21 end;
22 begin
23 g_n := 0;
24 end;
25 /
Package body created
SQL> exec pkg.reset_n;
PL/SQL procedure successfully completed
SQL> select pkg.inc_n from t;
INC_N
----------
1
2
3
SQL>
9i下 声明函数为 deterministic 的语法已经支持, 但是似乎该特性尚未实现.