文档章节

存储过程的输出参数为游标,PL/SQL中如何调用 Java代码如何调用

码农_皇甫
 码农_皇甫
发布于 2016/07/07 17:07
字数 245
阅读 25
收藏 2
点赞 0
评论 0


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

--包头
CREATE OR REPLACE PACKAGE MYPACKAGE AS
       type empcursor is ref 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 FOR SELECT * FROM emp WHERE deptno=dno;
       END queryEmpList;
END MYPACKAGE;  

--PL/SQL调用

declare
  type type_cur_data is ref cursor return emp%rowtype;
  v_cur_data type_cur_data;
  v_tab_data emp%rowtype;
begin
  MYPACKAGE.queryEmpList(10, v_cur_data);
  while (1=1) loop
    fetch v_cur_data into v_tab_data;
    exit when v_cur_data%notfound;
    dbms_output.put_line(v_tab_data.deptno || v_tab_data.ename);
  end loop;
end;
/*
    CREATE OR REPLACE PACKAGE MYPACKAGE AS
        type empcursor is ref cursor;
        procedure queryEmpList(dno in number,empList out empcursor);
    END MYPACKAGE;
*/

--java调用

@Test
public void testCursor(){
    String sql = "{call MYPACKAGE.queryEmpList(?,?)}";
    Connection conn = null;
    CallableStatement call = null;
    ResultSet rs = null;
    try {
        conn = JDBCUtils.getConnection();
        call = conn.prepareCall(sql);
        // 对于 in  参数,赋值
        call.setInt(1, 20);
        // 对于 out  参数,申明
        call.registerOutParameter(2, OracleTypes.CURSOR);
        // 执行
        call.execute();
        // 取出结果
        rs = ((OracleCallableStatement)call).getCursor(2);
        while(rs.next()){
        String name = rs.getString("ename");
        double sal = rs.getDouble("sal");
        String job = rs.getString("empjob");
        System.out.println(name+"\t"+sal+"\t"+job);
    }
} catch (Exception e) {
e.printStackTrace();
}finally{
JDBCUtils.release(conn, call, rs);
}
}
}

 

© 著作权归作者所有

共有 人打赏支持
码农_皇甫
粉丝 0
博文 12
码字总数 5211
作品 0
徐汇
程序员
plsql知识梳理-存储过程和java调用

1 存储过程介绍 存储过程是指用于特定操作的pl/sql块,是由流控制和sql语句书写的过程。 存储过程经编译和sql优化后存储在数据库服务器中,使用时候只需要调用即可。 2 存储过程的优点 1 使用...

小七_Dream
2015/08/11
0
0
Oracle pl/sql总结

(1)SEQNAME.NEXTVAL里面的值如何读出来?可以直接在insert into test values(SEQNAME.NEXTVAL) 是可以用 这样: SELECT tmp#_seq.NEXTVAL INTO id_temp FROM DUAL; 然后可以用id_temp (2)PL......

chapin
2013/03/25
0
0
java实现调用Mysql存储过程分析代码

数据库的测试代码如下 : 1、新建表test,sql代码如下: create table test(field1 int not null)TYPE=MyISAM ;insert into test(field1) values(1); 2、删除已存在的存储过程,代码如下: de...

afreon
2015/06/01
0
0
Spring JdbcTemplate方法详解

qldbFunctionSql); String createHsqldbProcedureSql = "CREATE PROCEDURE PROCEDURE_TEST" + "(INOUT inOutName VARCHAR(100), OUT outId INT) " + "MODIFIES SQL DATA " + "BEGIN ATOMIC "......

The-Start
2013/12/18
0
0
PHP调用Oracle存储过程

存储过程是实际位于 Oracle 中的程序。大多数存储过程都是用 PL/SQL 编写的,在 Oracle 数据库 10g 第 2 版和更高版本中,您可以用 Java、.NET 或其他语言将它们编写为外部过程。 存储过程通...

workingTiams
2012/11/30
0
0
spring中的JdbcTemplate简单记录

JdbcTemplate主要提供以下五类方法: execute方法:可以用于执行任何SQL语句,一般用于执行DDL语句; update方法及batchUpdate方法:update方法用于执行新增、修改、删除等语句;batchUpdate...

刘谱_smile
2015/07/15
0
0
mybatis调用oracle存储过程

博客原文:使用mybatis执行oracle存储过程 存储过程在小公司用的不多,但是如果业务比较复杂或者性能要求比较苛刻的时候存储过程就派上用场了,ibatis的前期的一些版本貌似不支持存储过程因此...

蛙牛
2014/07/30
0
3
如何在PLSQL中调试PACKAGE包中的FUNCTION函数

如何在PLSQL中调试PACKAGE包中的FUNCTION函数 Oracle中的packages包是一组包含procedures存储过程、functions函数和游标等元素的组合。相比Sybase数据库的SQL Advantage工具,Oracle数据库的...

yl497103815
07/02
0
0
Spring JdbcTemplate方法详解

JdbcTemplate主要提供以下五类方法: execute方法:可以用于执行任何SQL语句,一般用于执行DDL语句; update方法及batchUpdate方法:update方法用于执行新增、修改、删除等语句;batchUpdate...

zqcju
2014/06/13
0
6
Java Jdbc减少交互提升批量处理性能,到底该如何优化才好?

不拾掇Java有好几年了(N>3吧),之所以写这篇文章其实是纯粹是为了给开发人员一些好的使用jdbc真正去减少交互和提升批量处理batch update性能的例子; 如果你是DBA,那么工作之余你可以把这篇...

mj4738
2013/03/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

gRPC学习笔记

gRPC编程流程 1. proto文件定义 proto文件用于定义需要通过gRPC生成的接口,可以理解为接口定义文档 2. 通过构建工具生成服务基类代码-Maven或Gradle 3. 服务端开发 服务端实现类须实现通过构...

OSC_fly
18分钟前
0
0
Docker Mac (三) Dockerfile 及命令

Dockerfile 最近学习docker的时候,遇到一件怪事,关于docker镜像可能会被破坏,还不知道它会有此措施 所以需要了解构建Dockerfile的正确方法 Dockerfile是由一系列命令和参数构成的脚本,这些命...

___大侠
45分钟前
0
0
NetCat Tutorials

Hacking with Netcat part 1: The Basics Hacking with Netcat part 2: Bind and reverse shells Hacking with Netcat part 3: Advanced Techniques 10 Introduction to Netcat - pdf NetCat......

zungyiu
45分钟前
0
0
Android Studio+NDK+Cmake 移植FFmpeg-4.0.2命令行工具

一、编译 参考大神的帖子,亲测一次编译成功:https://blog.csdn.net/bobcat_kay/article/details/80889398 鉴于以前查文档的经验,这里附上编写例子的时间:2018年7月22日 我用的是ubantu,...

她叫我小渝
46分钟前
0
0
mysql创建数据库

登录MYSQL mysql -u root -p 脚本创建数据库WeChat,并制定默认的字符集是utf8mb4。 CREATE DATABASE Wechat DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_general_ci; 授权 grant all......

niithub
今天
0
0
svn: Unable to connect to a repository URL 的解决方案

错误图示: 解决办法:清除本地保存的授权信息; 1:右键点击本地文件夹,选择设置; TortoiseSVN -> Settings 2:在弹出的对话框中选择 Saved Data, 右侧选择:授权地方清理所有。 然后点确...

宁哥实战课堂
今天
1
0
sleep与wait的区别

Thread.sleep(XXX)方法消耗CPU吗? 这个知识点是我之前认识一直有错误的一个知识点,在我以前的认识里面,我一直认为Thread.sleep(1000)的这一秒钟的时间内,线程的休眠是一直占用着CPU的时间...

码代码的小司机
今天
1
0
20位活跃在Github上的国内技术大牛 leij 何小鹏 亚信

本文列举了20位在Github上非常活跃的国内大牛,看看其中是不是很多熟悉的面孔? 1. lifesinger(玉伯) Github主页: https://github.com/lifesinger 微博:@ 玉伯也叫射雕 玉伯(王保平),...

海博1600
今天
1
0
Mybatis收集配置

一、Mybatis取Clob数据 1、Mapper.xml配置 <resultMap type="com.test.User" id="user"> <result column="id" property="id"/> <result column="json_data" property="jsonData" ......

星痕2018
今天
1
0
centos7设置以多用户模式启动

1、旧版本linux系统修改inittab文件,在新版本执行vi /etc/inittab 会有以下提示 # inittab is no longer used when using systemd. # # ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON......

haha360
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部