关于绑定变量与非绑定变量的问题?

zccforever 2007-04-28 11:24:03
SQL> alter session set sql_trace=true;

会话已更改。

已用时间: 00: 00: 00.28
SQL> begin
2 for i in 1 .. 200000 loop
3 insert into t (x) values (i);
4 end loop;
5 end;
6 /

PL/SQL 过程已成功完成。

已用时间: 00: 00: 54.00
SQL> select count(*) from t;

COUNT(*)
----------
200000

已用时间: 00: 00: 00.18
SQL> begin
2 -- v_str := 'insert into t(x) values(:temp)';
3 for i in 1 .. 200000 loop
4 execute immediate 'insert into t(x) values(:temp)'
5 using i;
6 end loop;
7 end;
8 /

PL/SQL 过程已成功完成。

已用时间: 00: 01: 03.39
SQL> alter session set sql_trace=false;

会话已更改。

已用时间: 00: 00: 00.01
SQL>

--------------------
其中表T有一个NUMBER型字段X。
请问:
第一个存储过程有没有使用绑定变量?
若没有使用,为什么使用绑定变量的反而比未使用绑定变量的速度要慢?
若使用了,请问绑定变量有没有一个具体书写的形式?
...全文
257 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zccforever 2007-04-28
  • 打赏
  • 举报
回复
嘿嘿,现在还能补分么
DragonBill 2007-04-28
  • 打赏
  • 举报
回复
居然是0分贴-_-#
DragonBill 2007-04-28
  • 打赏
  • 举报
回复
第一个没有使用
若使用,具体形式见:execute immediate 'insert into t(x) values(:temp)'
5 using i;
:temp就是一个绑定变量

速度变是当然的,要解析变量并给变量传值
jdsnhan 2007-04-28
  • 打赏
  • 举报
回复
execute immediate 'insert into t(x) values(:temp)'
循环解析这句话是很慢的。
---------------------------------------
点当前页,右上角管理,可以加分。

17,078

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧