java实现调用ORACLE中的游标和包
今天把oracle中的包和游标学习了下,不废话,网上的的有些代码是错误的,抄来抄去,就自己实践了下,做个记录。直接上图,上代码
通过plsql创建自己的的包,包分为包头和包体。
1.包头如下:

CREATE OR REPLACE PACKAGE JAVALINKTEST
IS
TYPE CURSOR_TYPE IS REF CURSOR; --定义游标
PROCEDURE TEST_CURSOR(INPUT STRING, CURSOR_BACK OUT CURSOR_TYPE); END JAVALINKTEST;
2.包体如下:

CREATE OR REPLACE PACKAGE BODY JAVALINKTEST IS PROCEDURE TEST_CURSOR(INPUT STRING, CURSOR_BACK OUT CURSOR_TYPE)
IS
BEGIN
IF INPUT = '物料' THEN
OPEN CURSOR_BACK FOR SELECT * FROM T_BD_MATERIAL WHERE CFISSYNC = 1;
ELSE
OPEN CURSOR_BACK FOR SELECT * FROM T_BD_CUSTOMER WHERE CFISSYNC = 1; END IF; END TEST_CURSOR;
END JAVALINKTEST;
3.java环境,用的时eclispe,oracle 11g,java代码如下,需要的小伙伴自己引一下jdbc包吧

package cursorTest; import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import oracle.jdbc.OracleTypes;
import oracle.jdbc.oracore.OracleType; public class cursorUse {
static ResultSet rs = null;
static Statement stmt = null;
static Connection conn = null;
static CallableStatement proc = null;
static int i; public static void main(String[] args) { try {
// 加载驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
// 与数据库建立物理连接
conn = DriverManager.getConnection(
"jdbc:oracle:thin:@127.0.0.1:1521:orcl", "easdb", "easdb");
// 调用 游标
proc = conn.prepareCall("call JAVALINKTEST.TEST_CURSOR(?,?)");
proc.setString(1, "hhe");
proc.registerOutParameter(2, OracleTypes.CURSOR);
proc.execute();
rs = (ResultSet) proc.getObject(2); while (rs.next()) {
i+=1;
System.out.println("fid:" + rs.getString(1)+
" 编码:"+rs.getString("fnumber")+" 名称:"+rs.getString("fname_l2")); }
System.out.println("返回结果集:共"+i+"行");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} } }
运行结果如下:

java实现调用ORACLE中的游标和包的更多相关文章
- Java调用oracle存储过程通过游标返回临时表数据
注:本文来源于 < Java调用oracle存储过程通过游标返回临时表数据 > Java调用oracle存储过程通过游标返回临时表数据 项目开发过程中,不可避免的会用到存储过程返回结 ...
- oracle 中的游标
oracle 中的游标 通俗易懂的sql代码直接上! --简单的游标使用滴呀 --使用FOR OBJ IN OBJS LOOP ......END LOOP; DECLARE CURSOR C_JOB ...
- Oracle中使用游标转换数据表中指定字段内容格式(拼音转数字)
应用场景:将数据表TB_USER中字段NNDP的内容中为[sannanyinv]转换为[3男1女] 主要脚本:一个游标脚本+分割字符串函数+拼音转数字脚本 操作步骤如下: 1.创建类型 create ...
- Oracle中使用游标获取指定数据表的所有字段名对应的字符串
操作步骤:打开PLSQL Developer后,直接执行下面的语句就可以出来 --Oracle中使用游标获取指定数据表的所有字段名对应的字符串 declare mytablename VARCHAR( ...
- Oracle中的游标(转)
Oracle中的游标有两种:显式游标.隐式游标.显示游标是用cursor...is命令定义的游标,它可以对查询语句(select)返回的多条记录进行处理,而隐式游标是在执行插入 (insert).删除 ...
- Java代码调用Oracle的存储过程,存储函数和包
Java代码调用存储过程和存储函数要使用CallableStatement接口 查看API文档: 上代码: java代码调用如下的存储过程和函数: 查询某个员工的姓名 月薪 职位 create or ...
- java plsql 调用oracle数组类型
首先当然是在oracle中建立type CREATE OR REPLACE TYPE cux_proxy_bid_award_rec IS OBJECT ( trading_partner_id NU ...
- Mybatis调用Oracle中的存储过程和function
一.Mybatis调用存储过程 1 在数据库中创建以下的存储过程create or replace procedure pro_hello(p_user_name in varchar2,p_resu ...
- Oracle中的游标
Oracle游标 概念:内存中的一块区域,存放select结果 游标用来处理从数据库中检索的多行记录(使用SELECT语句).利用游标,程序可以逐个地处理和遍历一次检索返回的整个记录集.一.显示游标( ...
随机推荐
- selenium+phantomjs爬取动态页面数据
1.安装selenium pip/pip3 install selenium 注意依赖关系 2.phantomjs for windows 下载地址:http://phantomjs.org/down ...
- ORACLE常见数据类型详解
1.字符类型 • CHAR:一个定长字符串,当位数不足自动用空格填充来达到其最大长度.如非NULL的CHAR(12)总是包含12字节信息.CHAR字段最多可以存储2,000字节的 信息. • VARC ...
- TCP应用编程
TCP是Transmission Control Protocol(传输控制协议)的简称,是TCP/IP体系中面向连接的运输层协议,在网络中提供全双工的和可靠的服务. TCP协议最主要的特点是: 1) ...
- python环境
官网:https://www.python.org windows环境:http://www.cnblogs.com/windinsky/archive/2012/09/20/2695520.html ...
- Scala
简直就是java啊,mac上,下载,添加环境变量,source 就好了
- MS SQLSERVER 存儲過程與緩存
提升SQL Server最具性能的一个方面就是存储过程,SQL Server具备执行计划的缓存功能,以便计划重用.SQL Server2000增强了ad-hoc执行计划的缓存功能,就处理存储过程上性能 ...
- .Net“/”应用程序中的服务器错误 超过了最大请求长度 错误解决办法
错误如下: 错误提示: 说明: 执行当前 Web 请求期间,出现未处理的异常.请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息. 异常详细信息: System.Web.HttpE ...
- asp.net LINQ防止SQL注入式攻击
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...
- 9×9扫雷游戏代码-C写的
#include <stdio.h> #include <stdlib.h> //画棋盘 a雷表 b周围雷数表 c打开表 ][],][],][]) { ,j=; ;i<; ...
- NPOI MVC 模型导出Excel通用类
通用类: public enum DataTypeEnum { Int = , Float = , Double = , String = , DateTime = , Date = } public ...