Oracle游标绑定变量应用

本文探讨了Oracle中绑定变量的使用,通过示例展示了在动态SQL中使用绑定变量对比不使用绑定变量的性能差异,指出绑定变量可以提高效率并减少硬编译次数。然而,也提到了一些不适合使用绑定变量的情况,如长时间间隔执行的SQL和数据仓库场景。
摘要由CSDN通过智能技术生成

 

绑定变量:using → 只需要解析一次;
BEGIN
EXECUTE IMMEDIATE
'update emp set sal=sal*2 where empno=:p_empno' USING &p_eno;
COMMIT;
END;
注意:不能使用绑定变量替换实际的数据库对象名(表,视图,列等),只能替换字面量,
如果对象名是在运行时生成的,我们仍然需要对其用字符串拼接,同时,sql只会匹配已经
在共享池中相同的对象名
在动态sql中使用绑定变量和不使用绑定变量的性能测试(在测试表中添加10000条记录):
--创建测试表demo;
DROP TABLE demo;
CREATE TABLE demo(d_id NUMBER(6) PRIMARY KEY);
SELECT * FROM demo;
--1.不使用绑定变量
DECLARE
begin_time NUMBER(10);
end_time NUMBER(10);
BEGIN
begin_time := dbms_utility.get_time;
EXECUTE IMMEDIATE
'truncate table demo';
FOR i IN 1..10000
LOOP
EXECUTE IMMEDIATE
'INSERT INTO demo(d_id) VALUES('||i||')';
END LOOP;
end_time :=dbms_utility.get_time;
dbms_output.put_line((en

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值