千家信息网

oracle cursor 用法总结

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,PL sql中cursor用法是非常广泛的,常常用于存储过程和函数的返回值,其中用于函数的返回值变相的解决了pl sql 没有表值函数的问题,一般的,在java 调用存储过程,所返回的结果集也是用游标
千家信息网最后更新 2026年11月01日oracle cursor 用法总结

PL sql中cursor用法是非常广泛的,常常用于存储过程和函数的返回值,其中用于函数的返回值变相的解决了pl sql 没有表值函数的问题,一般的,在java 调用存储过程,所返回的结果集也是用游标去存储的。

游标分为动态游标和静态游标

1,动态游标定义分两种方式一种是先定义自定义类型如 Type my_cursor is ref cursor .这样就可以定义了一个游标类型,然后我们自己的变量就可以用这个自定义类型去定义了,如 cursorDemo my_cursor (直接用系统自带的sys_refcursor也是可以的);另外上面的my_cursor 又可以分为强类型和弱类型,顾名思义,强类型是指在定义的时候指定只能放哪些类型的值,如上面强类型定义Type my_cursor is ref cursor return emp%rowtype. 游标之所以称之为动态是因为可以放不同的值或者不同表的值(限于弱类型,强类型的动态是指相同类型不同表的值),如 open cursorDemo for

select 1 from dual;也可以 open cursorDemo for select a ,b from dual;

2,静态游标就比较简单了,定义的时候直接指定值就好了如 cursor my_cursor is select 1 from dual;


游标的使用。

1,在java中游标是用类型oracleTypes.CURSOR 调用然后返回结果,部分代码参考如下

CallableStatement cs = ct.prepareCall("{call findset_emp(?,?)}");

cs.setInt(1, 10);

cs.registerOutParameter(2, oracle.jdbc.OracleTypes.CURSOR);

cs.execute();

ResultSet rs = (ResultSet)cs.getObject(2);

while(rs.next()){

System.out.println(rs.getInt(1)+" "+rs.getString(2));

}

2,在存储过程或者函数中可以使用for 循环和fetch去调用

for循环的格式是如下

emp my_cursor%rowtype

for emp in my_cursor loop dbms_output.put_line(emp.a);

end loop;

fetch 用法格式如下

loop

fetch my_cursor into emp;

exit when emp%notfound;

dbms_output.put_line(emp.a);

end loop;

两者对比for循环应该是更简单一些,当然还有其他用法,这里就不一一介绍,基本这两种就够用了。















类型 游标 函数 动态 存储 不同 过程 循环 时候 格式 结果 静态 相同 顾名思义 之所以 代码 变量 够用 方式 系统 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 广东猪兼强互联网科技有限公司 中关村互联网 科技集团 互联网和科技技术 互联网中国科技 智网互联网科技 友谊互联网络科技 万达互联网科技 上海亿帐通互联网科技 左右互联网络科技 四个字互联网科技公司取名 新华互联网科技校企合作 互联网科技中介 宝灵互联网科技有限公司 东莞新华互联网科技学校 互联网科技公司营业执照怎么办理 江苏苏星互联网科技有限公司 福建互联网展示科技馆设计 全球科技与互联网公司市值变化 陕西九四连强互联网科技有限公司 众联互联网络科技 广州万易互联网科技有限公司 互联网与未来科技 苏州大垚互联网科技 创业天下互联网科技有限公司 互联网媒体平台算高科技产业 科技类公司包括互联网吗 济南有互联网科技公司吗 富国互联网金融科技混合基金 兰石爱特工业互联网科技分公司 互联网科技和医药行业
0