文档章节

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

码农_皇甫
 码农_皇甫
发布于 2016/07/07 17:07
字数 245
阅读 32
收藏 2


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

--包头
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中使用Java存储过程 (详解)

其实,这篇短文,我早就应该写了。因为,java存储过程今后在各大数据库厂商中越来越流行,功能也越来越强大。这里以Oracle为例,介绍一下java存储过程的具体用法。 任何转载,请尊重版权。(...

晨曦之光
2012/04/12
119
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
PHP调用Oracle存储过程

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

workingTiams
2012/11/30
0
0
调试经验——PL/SQL中调用Java代码

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hpdlzu80100/article/details/84930013 在调试PL/SQL中一段示例代码的过程中,学到了一个新的知识点:PL/SQL中...

预见未来to50
2018/12/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

mysql grant 用户权限总结

用户权限管理主要有以下作用: 1. 可以限制用户访问哪些库、哪些表 2. 可以限制用户对哪些表执行SELECT、CREATE、DELETE、DELETE、ALTER等操作 3. 可以限制用户登录的IP或域名 4. 可以限制用...

Airship
16分钟前
1
0
RabbitMQ学习(3)

1. 消费端 1. 消费端通过推模式或者拉模式从RabbitMQ中获取并消费消息,当消费者确认处理消息后,可以手动确认消息已被接收,然后就会将该消息从RabbitMQ的队列中标记再清除,消费者端还可以...

江左煤郎
26分钟前
1
0
linux mysql(5.7)开启慢查询

一、有3个配置需要设置, 1:相关开关 2:日志目录文件 3:慢查询的时间限制 二、设置完之后重启mysql service mariadb restart 三、重启后做个测试 连接mysql 并查询: select sleep(6); 四...

chro008
34分钟前
1
0
选择IDC机房、选择硬件、上架服务器、装系统

选择IDC机房 当业务量比较大的时候,往往选用IDC而不是公有云来跑业务。 IDC机房的服务一般分为两种 需要我们自己购买服务器和网络设备,托管到IDC机房。IDC机房会提供布线、巡检、硬件操作等...

李超小牛子
35分钟前
2
0
《傲慢与偏见》的读书笔记与读后感作文2400字

《傲慢与偏见》的读书笔记与读后感作文2400字: 作者:孙苑馨;笔者按:读书这个习惯是我爸妈养出来的。小时候父母赚的钱除了吃饭穿衣剩下的就是买书了,他们除了买各种新鲜出版的文艺派图书...

原创小博客
44分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部