在oracle中怎么用静态游标,Oracle之静态游标与动态游标

本文介绍了Oracle存储过程中游标的使用,重点讲解了静态游标和动态游标的概念及示例。静态游标在编译时执行SQL,效率较高;动态游标则允许带参数,适用于复杂业务场景,更加灵活。通过具体的代码示例展示了如何在Oracle中创建和使用这两种游标。
摘要由CSDN通过智能技术生成

文章目录

游标

静态游标和动态游标

静态游标demo

动态游标demo

总结

游标

简述:存储过程代码中从表中检索出结果集进行操作交互。

静态游标和动态游标

静态游标:程序执行的时候不需要再去解析sql语言,对于sql语句的解析在编译的时候就可以完成

动态游标:含有参数,对于sql语句的解析必须要等到参数确定的时候才能完成

测试表的BONUS1数据:

5f615a9dd79840ada217c3dcb3e052be.png

静态游标demo

静态游标:查询BONUS1表中的所有数据

这里可以看到sql写在定义游标的时候,编译时完成查询。

create or replace procedure curor is

cursor v_check_names is select ENAME from BONUS1;

v_ENAME BONUS1.ENAME%type;

begin

open v_check_names;

loop

fetch v_check_names into v_ENAME;

exit when v_check_names%notfound;

dbms_output.put_line(v_ENAME);

end loop;

close v_check_names;

end curor;

执行结果:

bf333f5f51d56dbaa7a6e660be62e75e.png

动态游标demo

动态游标:查询BONUS1表3行数据

这里可以看到动态游标会构造sql,带有参数。sql准备好以后再执行。

create or replace procedure curor is

type cur_get_index is ref cursor; --声明一个动态游标类型

v_cur_get_index cur_get_index; --声明一个动态游标变量

v_count number:=3;

v_ENAME varchar2(60);

v_JOB varchar2(60);

v_SAL varchar2(60);

v_COMM varchar2(60);

v_sql varchar2(60);

begin

v_sql := 'select * from BONUS1 where rownum <= '||v_count;

dbms_output.put_line('ENAME----JOB----SAL----COMM');

open v_cur_get_index for v_sql; -- 打开游标,并且SQL执行结果存放到游标

LOOP

fetch v_cur_get_index into v_ENAME,v_JOB,v_SAL,v_COMM;

exit when v_cur_get_index%notfound; -- 退出循环

dbms_output.put_line(v_ENAME||'----'||v_JOB||'----'||v_SAL||'----'||v_COMM);

END LOOP; -- 游标结束

end curor;

执行结果:

67402c26edcedb1bec69eadd30c306a0.png

总结

静态游标:在定义的时候指明sql语句,编译时候执行。效率高。

动态游标:可以带有参数,编写sql处理各种复杂的业务场景。更灵活。

推荐博文:存储过程静态游标、隐式游标、显式游标、动态游标、游标遍历

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值