- 论坛徽章:
- 0
|
过程1
create or replace procedure parse_sql1(deptno_i in varchar2)
is
v_sumsal number(6);
v_avgsal number(6);
v_minsal number(6);
v_sql varchar2(300);
begin
v_sql:='select sum(sal),avg(sal),min(sal) from emp where deptno=:1';
execute immediate v_sql into v_sumsal,v_avgsal,v_minsal using deptno_i;
end;
过程2
create or replace procedure parse_sql2(deptno_i in varchar2)
is
v_sumsal number(6);
v_avgsal number(6);
v_minsal number(6);
v_sql varchar2(300);
begin
select sum(sal),avg(sal),min(sal) into v_sumsal,v_avgsal,v_minsal
from emp where deptno=deptno_i;
end;
1.多次执行parse_sql1,发现每次都要进行软分析;
多次执行parse_sql2,却只是进行了一次软分析;
难道在动态sql中使用绑定变量,只能避免硬分析了?
我经常要使用动态sql来处理一下问题,难道是避免不了每次的软分析了吗??
2.v$sqlarea中parse_call字段可以解释为该语句的分析次数吗??
3.看了Expert one-on-one Oracle后,tom建议不要使用字符串连接的sql语句,问题是在很多应用中的,只能通过字符串连接的sql语句来完成相关的查询啊。
不知道我的说法是否正确,希望给予指正。谢谢了 |
|