1.作用
绑定变量是一种特殊类型的变量,又被称为占位符。
有效降低系统硬解析的数量。–OLTP
2.用法
2.1 sql文本中使用
SCOTT@regan> var x number;
SCOTT@regan> exec :x :=7369;
PL/SQL procedure successfully completed.
SCOTT@regan> select ename from emp where empno = :x;
ENAME
----------
SMITH
2.2 PL/SQL中使用
语法:execute immediate [带绑定变量的sql] using [绑定变量的值]
SCOTT@regan> declare
2 vc_name varchar2(10);
3 begin
4 execute immediate 'select ename from emp where empno = :1' into vc_name using 7369;
5 dbms_output.put_line(vc_name);
6 end;
7 /
SMITH
PL/SQL procedure successfully completed.
3.使用原则
依据应用系统的类型来决定是否使用绑定变量,即:
- OLAP/DSS系统,可以不使用
- OLTP系统,一定要使用,并最好使用批量绑定
- OLTP和OLAP混合的系统,如有循环,循环内部一定要使用绑定变量,并最好是批量绑定;循环外可以不使用
4.绑定变量窥探
9i中引入,通过参数_optim_peek_user_binds控制,默认为TRUE。
关闭:
alter system set "_optim_peek_user_binds"=false scope=spfile;
使sql硬解析的方式:
- 对目标sql中锁涉及的表执行ddl操作,如comment,grant等
- DBMS_SHARED_POOL.PURGE