博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java调用Oracle存储函数与存储过程
阅读量:3959 次
发布时间:2019-05-24

本文共 3236 字,大约阅读时间需要 10 分钟。

Oracle连接四要素(个人写法,用户与用户密码因人而异)

driverClassName=oracle.jdbc.OracleDriver
jdbc_url=jdbc:oracle:thin:@localhost:1521:ORCL
jdbc_username=scott
jdbc_password=scott

调用存储过程的关键代码:CallableStatement psta = con.prepareCall("{call proc_name(?, …)}");

调用存储函数的关键代码:CallableStatement psta = con.prepareCall("{? = call func_name(?, …)}");

pom依赖:Oracle 10g对应的依赖为ojdbc14.jar,而Oracle 11g对应的依赖为ojdbc6.jar

junit
junit
4.12
test
com.oracle.database.jdbc
ojdbc6
11.2.0.4
runtime

主程序代码:

package com.wanakiko.oracle;import oracle.jdbc.OracleTypes;import org.junit.Test;import java.sql.*;/** * @author WanAkiko * @create-time 2021-05-30 */public class JavaCallsProcAndFunc {    private static final String url = "jdbc:oracle:thin:@localhost:1521:ORCL";    private static final String user = "scott";    private static final String password = "scott";    @Test    public void javaCallsFunction() throws Exception {        // 加载数据库驱动        Class.forName("oracle.jdbc.OracleDriver");        // 获取Connection连接        Connection con = DriverManager.getConnection(url, user, password);        // 准备调用自定义存储函数        CallableStatement psta = con.prepareCall("{? = call func_calc_salary(?)}");        psta.registerOutParameter(1, OracleTypes.NUMBER);        psta.setObject(2, 7788);        // 执行自定义存储函数        psta.execute();        // 接收并输出存储函数的RETURN结果        System.out.println(psta.getObject(1));        psta.close();        con.close();    }    @Test    public void javaCallsProcedure() throws Exception {        // 加载数据库驱动        Class.forName("oracle.jdbc.OracleDriver");        // 获取Connection连接        Connection con = DriverManager.getConnection(url, user, password);        // 准备调用自定义存储过程        CallableStatement psta = con.prepareCall("{call proc_calc_sal(?, ?)}");        psta.setObject(1, 7788);        psta.registerOutParameter(2, OracleTypes.NUMBER);        // 执行自定义存储过程        psta.execute();        // 输出OUT参数附带的结果        System.out.println(psta.getObject(2));        psta.close();        con.close();    }    @Test    public void testEnvironmentSetup() {        try {            // 加载数据库驱动            Class.forName("oracle.jdbc.OracleDriver");            // 获取Connection连接            final String url = "jdbc:oracle:thin:@localhost:1521:ORCL";            final String user = "scott";            final String password = "scott";            Connection con = DriverManager.getConnection(url, user, password);            // 获取预处理语句并为查询参数赋值            PreparedStatement psta = con.prepareStatement("SELECT * FROM emp WHERE empno = ?");            psta.setObject(1, 7788);            // 执行查询操作            ResultSet rs = psta.executeQuery();            while (rs.next()) {                System.out.println(rs.getString("ename"));            }            rs.close();            psta.close();            con.close();        } catch (ClassNotFoundException e) {            e.printStackTrace();        } catch (SQLException e) {            e.printStackTrace();        }    }    }

在这里插入图片描述

转载地址:http://bpmzi.baihongyu.com/

你可能感兴趣的文章
P8-c++对象和类-01默认构造函数详解
查看>>
P1-c++函数详解-01函数的默认参数
查看>>
P3-c++函数详解-03函数模板详细介绍
查看>>
P4-c++函数详解-04函数重载,函数模板和函数模板重载,编译器选择使用哪个函数版本?
查看>>
P5-c++内存模型和名称空间-01头文件相关
查看>>
P6-c++内存模型和名称空间-02存储连续性、作用域和链接性
查看>>
P9-c++对象和类-02构造函数和析构函数总结
查看>>
P10-c++对象和类-03this指针详细介绍,详细的例子演示
查看>>
bat备份数据库
查看>>
linux数据库导出结果集且比对 && grep -v ---无法过滤的问题
查看>>
shell函数与自带变量
查看>>
linux下shell获取不到PID
查看>>
sort详解
查看>>
linux,shell中if else if的写法,if elif
查看>>
shell中单引号、双引号、反引号的区别
查看>>
shell脚本死循环方法
查看>>
shell中$*和$@的区别
查看>>
log4cxx 的编译安装过程和使用
查看>>
简单邮件系统程序
查看>>
STL里的multimap使用详解
查看>>