免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1462 | 回复: 1
打印 上一主题 下一主题

在动态sql使用绑定变量,无法避免多次软分析?? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-09-04 16:42 |只看该作者 |倒序浏览
过程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语句来完成相关的查询啊。
不知道我的说法是否正确,希望给予指正。谢谢了

论坛徽章:
0
2 [报告]
发表于 2006-09-04 22:00 |只看该作者
我想知道数据库参数CURSOR_SHARING设置成何值

sqlplus / as sysdba
SQL>show parameter cursor_sharing

结果贴出来,

你设置成CURSOR_SHARING=SIMILAR 或者 CURSOR_SHARING=FORCE再察看一下结果
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP