编程那点事编程那点事

专注编程入门及提高
探究程序员职业规划之道!

JFinal 调用 Oracle 存储过程

JFinal 调用 Oracle 存储过程/函数,具体步骤如下:

数据库连接定义

String oracleUrl = "jdbc:oracle:thin:@127.0.0.1:1521/xxx";
DruidPlugin oraclePlugin = new DruidPlugin(oracleUrl, "name", "pwd");
oraclePlugin.setDriverClass("oracle.jdbc.OracleDriver");
oraclePlugin.start();
ActiveRecordPlugin oracleArp = new ActiveRecordPlugin("oracle",oraclePlugin);
oracleArp.setDialect(new OracleDialect());
oracleArp.start();

Oracle 函数定义,我这里只放出定义:

function f_GetSpecialPriceSale
  (
    RESULT_SALE out sys_refcursor,
    Goods in varchar2,
    SaleDate in Date,
    MSG out varchar2
  )
    return integer;

JFinal 调用该函数的部分代码如下

Db.use("oracle").execute((conn) -> {
                CallableStatement  stmt = conn.prepareCall("{ ? = call f_GetSpecialPriceSale(?, ?, ?, ?) }");
                stmt.registerOutParameter(1, OracleTypes.INTEGER);
                stmt.registerOutParameter(2, OracleTypes.CURSOR);
                stmt.setString(3, joiner.toString());
                stmt.setDate(4, DateUtil.parse(specialDate).toSqlDate());
                stmt.registerOutParameter(5,OracleTypes.NVARCHAR);
                stmt.execute();

                int returnValue = stmt.getInt(1);
                ResultSet resultSet = (ResultSet) stmt.getObject(2);
                String msg = stmt.getString(5);

                // 处理结果集
                while (resultSet.next()) {
                    // 从结果集中获取数据
                    
                }
                return stmt;
            });

 

未经允许不得转载: 技术文章 » Java编程 » JFinal 调用 Oracle 存储过程