可以看出二者的性能差的不是一点半点儿.....
SQL> alter system flush shared_pool;
系统已更改。
SQL> declare
2 type rc is ref cursor;
3 l_rc rc;
4 l_objectName all_objects.object_name%type;
5 l_startTime number default dbms_utility.get_time;
6 begin
7 for var in 1 .. 1000
8 loop
9 open l_rc for 'select /*+ rule */ object_name from dba_objects where object_id = '||var;
10 fetch l_rc into l_objectName;
11 close l_rc;
12 end loop;
13
14 dbms_output.put_line(round( (dbms_utility.get_time-l_startTime)/100,2)||' seconds...');
15 end;
16 /
12.17 seconds...
PL/SQL 过程已成功完成。
SQL> alter system flush shared_pool;
系统已更改。
SQL> declare
2 type rc is ref cursor;
3 l_rc rc;
4 l_objectName all_objects.object_name%type;
5 l_startTime number default dbms_utility.get_time;
6 begin
7 for var in 1 .. 1000
8 loop
9 open l_rc for 'select object_name from dba_objects where object_id = :x' using var;
10 fetch l_rc into l_objectName;
11 close l_rc;
12 end loop;
13
14 dbms_output.put_line(round( (dbms_utility.get_time-l_startTime)/100,2)||' seconds...');
15 end;
16 /
.12 seconds...
PL/SQL 过程已成功完成。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12361284/viewspace-6866/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/12361284/viewspace-6866/