在java中调用oracle的存储过程

@Override
 public List getCustomerPhoneBookBySearch(String customerMobile, String callName) throws SQLException {
  logger.info(" 通过客户来电号码获取oracle里的数据的方法:getCustomerPhoneBookBySearch 开始执行");
  
  List list = new ArrayList();
     PhoneBook phone_book = null;
    
     // 加载Oracle驱动      
     DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());   
     String sUsr = "webaddrbook";
     String sPwd = "webaddrbookpwd";
     // 获得Oracle数据库连接      
     Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@数据库IP:1521:表名", sUsr, sPwd);
     oracle.jdbc.OracleCallableStatement ocs = null;
     String sqlStr = "{call ps_read_carcontact(?,?,?,?)}";  // 存储过程ps_read_carcontact()
     ResultSet rs = null;

     try{
       ocs = (oracle.jdbc.OracleCallableStatement)conn.prepareCall(sqlStr);
       ocs.setString(1,customerMobile);      
       ocs.registerOutParameter(2,oracle.jdbc.OracleTypes.CURSOR);      
       ocs.registerOutParameter(3,oracle.jdbc.OracleTypes.INTEGER);
       ocs.registerOutParameter(4,oracle.jdbc.OracleTypes.VARCHAR);      
       ocs.execute();
       logger.info(" getCustomerPhoneBookBySearch 已经执行存储过程 ");
       rs = ocs.getCursor(2);
      
       while(rs.next()){
      phone_book = new PhoneBook();    
      
      if(rs.getString(4).contains(callName) || rs.getString(3).contains(callName) || getEname(rs.getString(3)).contains(callName ) || getFirstSpell(rs.getString(3)).contains(callName ) ){  // 名字:中文字符  名字: 拼音
          long currentProcessor = rs.getLong(1);        
          phone_book.setId(currentProcessor);         
          phone_book.setCarmobile(rs.getString(2));         
          phone_book.setConname(rs.getString(3));           
          phone_book.setConmobile(rs.getString(4)); 
      }else{
       continue;
      }         
      
         list.add(phone_book);
       }

       rs.close();
       ocs.close();
     }catch(Exception e){
       System.out.println("Exception e "+e.getMessage());
     }
     logger.info(" getCustomerPhoneBookBySearch 执行结束 ");
     return list;
 }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值