详解Oracle在out参数中访问光标

发布时间 - 2026-01-11 02:49:21    点击率:

详解Oracle在out参数中访问光标

一 概念

申明包结构
包头:负责申明
包体:负责实现 

二 需求

查询某个部门中所有员工的所有信息

三 包头

CREATE OR REPLACE 
PACKAGE MYPACKAGE AS 
 type empcursor isref cursor;
 procedure queryEmplist(dno in number,emplist out empcursor);
END MYPACKAGE;

四 包体

包体需要实现包头中声明的所有方法

CREATE OR REPLACE
PACKAGE BODY MYPACKAGE AS
 procedure queryEmplist(dno in number,emplist out empcursor) AS
BEGIN
--打开光标
  open emplist forselect*from emp where deptno = dno;
END queryEmplist;
END MYPACKAGE;

五 在应用程序中访问包中的存储过程

1、代码

package demo.oracle;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import oracle.jdbc.OracleCallableStatement;
import oracle.jdbc.OracleTypes;
import org.junit.Test;
import demo.utils.JDBCUtils;
publicclassTestCursor{
/*
 CREATE OR REPLACE PACKAGE MYPACKAGE AS 
 type empcursor is ref cursor;
 procedure queryEmplist(dno in number,emplist out empcursor);
END MYPACKAGE;
 * */
@Test
publicvoid testCursor(){
String sql="{call MYPACKAGE.queryEmplist(?,?)}";
Connection conn =null;
CallableStatement call =null;
ResultSet rs =null;
try{
//获取数据库的连接
  conn =JDBCUtils.getConnection();
//创建statement
  call = conn.prepareCall(sql);
//对于in参数,赋值
  call.setInt(1,10);
//对于out参数,申明
  call.registerOutParameter(2,OracleTypes.CURSOR);
//执行调用
  call.execute();
//取出该部门中所有员工的信息
  rs =((OracleCallableStatement)call).getCursor(2);
while(rs.next()){
//取出该员工的员工号,姓名,薪水和职位
int empno = rs.getInt("empno");
String name =rs.getString("ename");
double salay = rs.getDouble("sal");
String job = rs.getString("empjob");
System.out.println(empno+"\t"+name+"\t"+salay+"\t"+job);
}
}catch(Exception e){
  e.printStackTrace();
}finally{
JDBCUtils.release(conn, call, rs);
}
}
}

2、运行结果

7782  CLARK  6450.0  MANAGER
7839  KING  10100.0  PRESIDENT
7934  MILLER  3300.0  CLERK

以上就是Oracle在out参数中访问光标的实例,如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# Oracle在out参数中访问光标  # Oracle在out参数中访问光标的实例详解  # Oracle的out参数实例详解  # Oracle中serveroutput参数一次设置永久保存方法  # Oracle 子程序参数模式  # IN  # OUT  # NOCOPY  # 如有  # 希望能  # 谢谢大家  # 存储过程  # 应用程序  # 门中  # 包中  # 疑问请  # 该部  # import  # java  # CallableStatement  # oracle  # deptno  # package  # demo  # utils  # Test  # junit  # ref 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel怎么实现搜索高亮功能_Laravel结合Scout与Algolia全文检索【实战】  JavaScript常见的五种数组去重的方式  魔方云NAT建站如何实现端口转发?  胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?  Laravel怎么进行浏览器测试_Laravel Dusk自动化浏览器测试入门  大同网页,大同瑞慈医院官网?  如何在阿里云通过域名搭建网站?  Laravel中Service Container是做什么的_Laravel服务容器与依赖注入核心概念解析  Win11怎么开启自动HDR画质_Windows11显示设置HDR选项  北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?  免费网站制作appp,免费制作app哪个平台好?  Laravel软删除怎么实现_Laravel Eloquent SoftDeletes功能使用教程  如何选择PHP开源工具快速搭建网站?  java获取注册ip实例  国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?  Laravel Octane如何提升性能_使用Laravel Octane加速你的应用  网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?  jQuery validate插件功能与用法详解  阿里云网站搭建费用解析:服务器价格与建站成本优化指南  详解jQuery中的事件  Python文件流缓冲机制_IO性能解析【教程】  如何用JavaScript实现文本编辑器_光标和选区怎么处理  javascript和jQuery中的AJAX技术详解【包含AJAX各种跨域技术】  动图在线制作网站有哪些,滑动动图图集怎么做?  微信小程序 闭包写法详细介绍  微信推文制作网站有哪些,怎么做微信推文,急?  原生JS实现图片轮播切换效果  香港服务器网站生成指南:免费资源整合与高速稳定配置方案  js实现获取鼠标当前的位置  Laravel Facade的原理是什么_深入理解Laravel门面及其工作机制  无锡营销型网站制作公司,无锡网选车牌流程?  微信小程序 五星评分(包括半颗星评分)实例代码  微博html5版本怎么弄发超话_超话进入入口及发帖格式要求【教程】  html如何与html链接_实现多个HTML页面互相链接【互相】  怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?  浅谈Javascript中的Label语句  Laravel中的withCount方法怎么高效统计关联模型数量  Laravel如何实现多对多模型关联?(Eloquent教程)  Laravel如何实现多语言支持_Laravel本地化与国际化(i18n)配置教程  Edge浏览器怎么启用睡眠标签页_节省电脑内存占用优化技巧  Laravel如何编写单元测试和功能测试?(PHPUnit示例)  Laravel如何配置任务调度?(Cron Job示例)  HTML透明颜色代码在Angular里怎么设置_Angular透明颜色使用指南【详解】  Laravel如何创建和注册中间件_Laravel中间件编写与应用流程  Python面向对象测试方法_mock解析【教程】  大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?  如何快速搭建高效WAP手机网站吸引移动用户?  消息称 OpenAI 正研发的神秘硬件设备或为智能笔,富士康代工  Laravel的路由模型绑定怎么用_Laravel Route Model Binding简化控制器逻辑  Laravel如何发送邮件和通知_Laravel邮件与通知系统发送步骤