2、PL/SQL块中使用绑定变量
[sql] view plaincopyprint?
SQL> create table t(id number,val number); -->首先创建表t
SQL> get get_parse.sql
1 select name,value from v$mystat a join v$statname b
2* on a.statistic#=b.statistic# where b.name like 'parse count%';
SQL> @get_parse.sql -->获得当前的解析情况,此时hard parase 为63
NAME VALUE
------------------------- ----------
parse count (total) 394
parse count (hard) 63
parse count (failures) 1
-->下面的pl/sql代码中,Oracle实现自动变量自动绑定,执行了30次的insert操作,但oracle认为每次执行的语句都是一样的
SQL> begin -->执行pl/sql代码,向表t中插入30条记录
2 for i in 1..30 loop
3 insert into t values(i,i*2);
4 end loop;
5 commit;
6 end;
7 /
PL/SQL procedure successfully completed.
SQL> @get_parse -->代码执行后的结果,硬解析数量仅仅增加了3次
NAME VALUE
------------------------- ----------
parse count (total) 401
parse count (hard) 67
parse count (failures) 1
SQL> create table t(id number,val number); -->首先创建表t
SQL> get get_parse.sql
1 select name,value from v$mystat a join v$statname b
2* on a.statistic#=b.statistic# where b.name like 'parse count%';
SQL> @get_parse.sql -->获得当前的解析情况,此时hard parase 为63
NAME VALUE
------------------------- ----------
parse count (total) 394
parse count (hard) 63
parse count (failures) 1
-->下面的pl/sql代码中,Oracle实现自动变量自动绑定,执行了30次的insert操作,但oracle认为每次执行的语句都是一样的
SQL> begin -->执行pl/sql代码,向表t中插入30条记录
2 for i in 1..30 loop
3 insert into t values(i,i*2);
4 end loop;
5 commit;
6 end;
7 /
PL/SQL procedure successfully completed.
SQL> @get_parse -->代码执行后的结果,硬解析数量仅仅增加了3次
NAME VALUE
------------------------- ----------
parse count (total) 401
parse count (hard) 67
parse count (failures) 1