JNDI调用oracle包中带参函数并且函数返回值为cursor

数据库中的包test下的函数getTodoList函数:

  1. create or replace package test is---包头
  2.   type cursorref is ref cursor;---定义游标
  3.   function getTodoList(userid    varchar2, username  varchar2) return cursorref;--函数
  4. end test ;
  5. create or replace package body test is-----包体
  6. function getTodoList
  7.        (userid   varchar2,
  8.         username varchar2)
  9.   return cursorref
  10.   is
  11.     vs_userid  varchar2(200);
  12.     vs_sql     varchar2(2000);
  13.     p_cursor   cursorref;
  14.   begin
  15.    vs_sql :='select Email,School,Address from userInfo where id='||userid||' name='||username;
  16.     open p_cursor for vs_sql;
  17.     return p_cursor;
  18. end;
  19. end test;

java代码调用:

  1. public List returnInfo(){
  2.         List list=new ArrayList();
  3.         try {
  4.             Context initCtx=new InitialContext();//InitialContext此类是执行命名操作的初始上下文
  5.             DataSource ds=(DataSource)initCtx.lookup("java:comp/env/jdbc/LiferayPool");
  6.             Connection conn=ds.getConnection();
  7.             CallableStatement callsta=conn.prepareCall("{?=call pkg_flow.getTodoList(?,?)}");
  8.             callsta.setString(2"001");
  9.             callsta.setString(3"laozhang");
  10.             callsta.registerOutParameter(1, oracle.jdbc.OracleTypes.CURSOR);
  11.             callsta.execute();
  12.             ResultSet rs=(ResultSet)callsta.getObject(1);
  13.             
  14.             if(rs!=null){
  15.                 while(rs.next()){
  16.                     System.out.println(rs.getString("email")+"___"+rs.getString("school")+"___"+rs.getString("address"));
  17.                 //可从rs取值放入到list中......
  18.                 }
  19.             }
  20.         } catch (NamingException e) {
  21.             e.printStackTrace();
  22.         } catch (SQLException e) {
  23.             e.printStackTrace();
  24.         }
  25.         return list;
  26.     }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值