详解Oracle在out参数中访问光标
作者:cakin24 发布时间:2024-01-12 21:17:50
标签:Oracle,out,光标
详解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
来源:http://cakin24.iteye.com/blog/2389812


猜你喜欢
- 这篇文章主要介绍了如何使用Python抓取网页tag操作,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的
- 本文实例讲述了Python实现基于C/S架构的聊天室功能。分享给大家供大家参考,具体如下:一、课程介绍1.简介本次项目课是实现简单聊天室程序
- Django保证表单的正确显示需要添加CSRF(防止网站跨站请求伪造而默认开启的一种保护方式),在<form></form
- 本文实例讲述了PHP邮件发送类PHPMailer用法,并详细讲述了其具体的操作步骤。分享给大家供大家参考。具体步骤如下:1.在服务器安装 s
- 1.使用Management Studio Express,用“Windows身份验证”登录,选中SQL服务器名,右击鼠标选择属性,在服务器
- 什么情况下用响应缓冲会提高运行速度?例1、脚本引擎与 HTML 之间的切换频繁,对响应流写操作太多,导致性能下降:<table>
- win7以上需要使用管理员权限操作。# -*- coding: utf-8 -*-import osimport globimport sh
- 前言刚刚看了EuroPython 2017一篇演讲,Why You Don't Need Design Patterns in Py
- 使用scipy.optimize模块的root和fsolve函数进行数值求解线性及非线性方程,下面直接贴上代码,代码很简单from scip
- 前言最近 GitHub 上有个基于 ChatGPT API 的浏览器脚本,openai-translator, 短时间内 star 冲到了
- 需求:给定一个dataframe和一个list,list中存放的是dataframe中某一列的元素,删除dataframe中与list元素重
- 在广大网友心目中,他们就是中国互联网搜索领域的三驾马车。无论这三家搜索巨头承不承认,在网友眼中总会来将他们进行对比比较。当然,更多时候的比较
- 大家好,我是丁小杰!今天和大家分享Pandas中四种有关数据透视的通用函数,在数据处理中遇到这类需求时,能够很好地应对。pandas.mel
- 导语承载童年的纸飞机你还会叠嘛?如果你是个80后或者90后,那你应该记得小时候玩的纸飞机。叠好后,哈口仙气,飞出去,感觉棒棒哒。虽然是一个极
- IE历来被web标准的拥护者所诟病,而当FireFox横空出世以后,更多的网页制作者开始关注web标准设计。看着FireFox的市场占有率不
- 任务1、循环输出26个字母对应的ASCII码值x=97#代表的是a的ASCII值for _ in range(1,27): &n
- 数据过滤器(Data filters)在数据库开发中,我们一般会运用软删除(soft-delete)模式,即不直接从数据库删除数据,而是标记
- 目录0x01 字符串(string)引号转义拼接字符串长字符串索引( indexing)运算符in创建列表切片赋值0x02 字符串格式化模板
- <ul> <li> <input type="radio" name="radi
- 1. 概述在看代码的时候发现基本上都是用 querySelector() 和 querySelectorAll() 来获取元素,疑惑为什么不