servlet首先建立数据库连接类ConnectFactory:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import javax.naming.InitialContext;
import javax.sql.DataSource;
 
public class ConnectFactory {
    private  Connection conn;
    private  DataSource connnectionPool;
        
        //链接中间件的连接池
    public ConnectFactory(){
        try {
          InitialContext ctx = new InitialContext();
          connnectionPool = (DataSource) ctx.lookup("PaymentDS");
        }
        catch (Exception e) {
            e.printStackTrace();
        }
    } 
    
        //获得连接池的链接对象
    public  Connection getConn() throws Exception {
        try {
          conn=connnectionPool.getConnection();
          return conn;
        }
        catch (SQLException sqle) {
          throw new Exception();
        }
      }
    
    static{
        try{
            Class.forName("oracle.jdbc.driver.OracleDriver");
        }catch(ClassNotFoundException e){
            throw new ExceptionInInitializerError(e);
        }
    }
    
        //获得手写链接字符串的链接
    public static Connection getConnection() throws SQLException{
        return DriverManager.getConnection("jdbc:oracle:thin:@192.168.2.37:1521:sdecp","eca","errors");
    }
 
}
外部调用链接:
    public Map getBusinessB2ADeal(String b2aNo) throws Exception{
        Map res = null;
        Connection con = ConnectFactory.getConnection();
//        Connection con = new ConnectFactory().getConn();
        CallableStatement cs = con.prepareCall("{call proc_business_b2aNo(?,?,?,?,?,?)}");
        cs.setString("b2aNo", b2aNo);
        cs.registerOutParameter("b2aBank", Types.VARCHAR);
        cs.registerOutParameter("b2aAmount", Types.DOUBLE);
        cs.registerOutParameter("b2aType", Types.VARCHAR);
        cs.registerOutParameter("b2aNotify", Types.VARCHAR);
        cs.registerOutParameter("b2aBill", Types.VARCHAR);
        cs.execute();
        
        String b2aBank = cs.getString("b2aBank");
            String b2aAmount = cs.getString("b2aAmount");
        String b2aType = cs.getString("b2aType");
        String b2aNotify = cs.getString("b2aNotify");
        String b2aBill = cs.getString("b2aBill");
        
        if(!StringUtils.isEmpty(b2aBank)){
            res = new HashMap();
            res.put("bankId", b2aBank);
            res.put("amount", b2aAmount);
            res.put("b2aType", b2aType);
            res.put("b2aNotify", b2aNotify);
            res.put("b2aBill", b2aBill);
        }
        cs.close();
        con.close();
        return res;
    }
存储过程:
CREATE OR REPLACE PROCEDURE proc_business_b2aNo(
  b2aNo in varchar2,
  b2aBank out varchar2,
  b2aAmount out NUMBER,
  b2aType out varchar2,
  b2aNotify out varchar2,
  b2aBill out varchar2
)
IS
BEGIN
  SELECT tb2a.b2a_bank,tb2a.b2a_amount,tb2a.b2a_Type,tb2a.b2a_NOTIFY,tb2a.b2a_Bill
       INTO b2aBank,b2aAmount,b2aType,b2aNotify,b2aBill
  FROM t_b2a tb2a WHERE tb2a.b2a_no = b2aNo;
   EXCEPTION
     WHEN NO_DATA_FOUND THEN
       NULL;
     WHEN OTHERS THEN
       -- Consider logging the error and then re-raise
       RAISE;
END proc_business_b2aNo;

servlet 调用oracle数据库存储过程相关推荐

  1. 【AIO】使用ORACLE数据库存储过程发送企业微信群机器人消息

    前言 为了对标阿里系的钉钉,腾讯于2016年4月18日推出了企业微信 专注企业内部通讯(目前已加入客户管理及客户通讯功能),替代原有的RTX腾讯通 企业微信由于微信的生态及其易用性,已被很多企业使用, ...

  2. oracle数据库存储过程中NO_DATA_FOUND不起作用解决

    oracle数据库存储过程中NO_DATA_FOUND不起作用 1.首先创建一个表lengzijiantest,表中只有一个字段f_id ? 1 2 3 4 5 [cpp] CREATE TABLE ...

  3. 使用shell脚本调用mysql数据库存储过程,并设置定时任务

    本来是要mysql数据库中创建事件任务来,定时执行存储过程,做数据传输的...后来由于种种原因,就使用crontab来定时执行,调用存储过程. 实现这个数据传输分为两步: 第一步:编写shell脚本调 ...

  4. Mybatis调用Oracle的存储过程

    如何使用Mybaits调用数据库中的存储过程,下面以Oracle数据库的为例: 1.在数据库中创建以下的存储过程: 2.编写SQL映射文件WxclDAO.xml: <select id=&quo ...

  5. oracle怎么调报表,集智数据平台报表如何调用Oracle数据存储过程

    需要注意的是,当在单元格中用call函数调用存储过程时,执行存储过程,返回结果数据集合,只能返回单列数据,如果存储过程返回多个 数据集的数据来自存储过程.sql语句执行的时候要先编译,然后执行.存储过 ...

  6. 用.NET调用oracle的存储过程返回记录集

    最近做一个项目,为了提高数据库安全性,客户要求所有数据库操作都要放在存储过程.象一般的更新操作,返回一个值的,都比较容易实现.而要想返回记录集就比较麻烦,我在网上搜了一下,这方面的文章并不多.在此总结 ...

  7. 编程开发之--Oracle数据库--存储过程和存储函数(2)

    上一小结我们简单介绍了存储过程和存储函数,对存储过程和存储函数有了一个基本的了解,接下来介绍在java程序中如何调用我们创建的存储过程和存储函数 1.在应用程序中调用我们的存储过程 创建一个简单的Ja ...

  8. 编程开发之--Oracle数据库--存储过程在out参数中使用光标(3)

    在本系列学习随笔中的第2节我们留下了2个问题,我们现在讨论在out参数中使用光标. 1.要在out参数中使用光标,我们需要申明一个包的结构,包的结构分为包头和包体,包头只负责申明,包体只负责实现.包头 ...

  9. oracle spring 分页查询,SpringJDBC 调用oracle 通用存储过程分页

    我博客前面有写道SpringJDBC调用通用的Oracle存储过程,今天来讲一下通用的Java存储过程带分页的功能,其中里面还有动态查询的SQL拼接,好的,先上代码 1.Java代码 @Autowir ...

最新文章

  1. matconvnet中使用fastrcnn遇到的问题
  2. java http get json_java实现Http post(参数json格式)、get 请求
  3. C++ 11 深度学习(八)重定义override
  4. shell执行perl_【编程技巧(一)】在Perl、Shell和Python中传参与输出帮助文档
  5. 位枚举(Bit Flags)
  6. laravel小记(composer 安装和predis使用)
  7. matlab 变量和数组中,求助:如何将带有符号变量的运算结果储存到数组中
  8. 面试绕不开的 CAP 理论,这篇文章帮你搞定!
  9. 每天10个Linux命令一
  10. ElasticSearch + Canal 开发千万级的实时搜索系统【转】
  11. 64位系统装32位计算机,32位的cpu能不能装64位系统|cpu是32位的可以装64位系统吗...
  12. 如何使用“迁移助理”将文件从旧 Mac 移到新Mac?
  13. HTML5 视频直播那些事儿+吕小鸣博客
  14. 经验分享:新媒体运营离不开的几款运营软件
  15. c语言字符三维数组定义时赋值,c语言中三维数组的赋值顺序?
  16. [LiteratureReview]A survey of image semantics-based visual simultaneous localization and mapping....
  17. zabbix模板关联群组
  18. 教师专业技能考试试题计算机,Zmxepv信息技术教师考试题库
  19. 《海豹突击队体能训练手册》——序
  20. 第六章(1.5)深度学习实战——利用RNN和LSTM生成小说题记

热门文章

  1. 山东鲁能轨道智能巡检机器人_温湿度传感器在轨道巡检机器人中的应用
  2. 计算机中丢失了ll是什么意思,丢失了ntoskrnl.exe和hal.ll
  3. gpio驱动蜂鸣器出现破音_五款蜂鸣器驱动电路原理图
  4. windows查询每个线程占用的内存_C#多线程
  5. mysql 共享锁_mysql有排他锁为什么还需要共享锁呢?
  6. c/c++读取txt文件中指定行的内容_和尧名大叔一起从0开始学Python编程-简单读写文件
  7. MySQL 8.0开始Group by不再排序
  8. 几款效率神器助你走上人生巅峰
  9. Hadoop 2.5.1集群安装配置
  10. 当众讲话第二章当众讲话的基本原则