JDBC调用Oracle的存储过程

本文介绍了如何通过JDBC调用Oracle的存储过程,详细讲述了存储过程的参数类型,并给出了具体的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

*存储过程分为带参数和不带参数;参数又分为输入参数、输出参数以及既是输入参数又是输出参数。*

JDBC调用Oracle存储过程的代码如下:

import java.sql.*;


public class OracleProcedure {

	public static void main(String[] args) throws Exception {
		Class.forName("oracle.jdbc.OracleDriver");//加载驱动
		Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "scott", "oracle");//建立连接

/*		 1.调用不带参数的存储过程
		CREATE OR REPLACE procedure add_dept is
		begin
			insert into dept values(50,'aaa','bbb');
			commit;
		end;
*/		
		String sql = "call add_dept()";
		CallableStatement cst = con.prepareCall(sql);
		cst.execute();
		
/*		2.调用带参数的存储过程
		CREATE OR REPLACE procedure find_dept (
			dno number,
			dname out varchar2,
			loc out varchar2
		) is
		begin
			select dname,loc into dname,loc from dept where deptno = dno;
		end;
*/
		sql = "call find_dept(?,?,?)";// 第一个为输入参数,后两个为输出参数
		cst = con.prepareCall(sql);
		cst.setInt(1, 50);
		cst.registerOutParameter(2, Types.VARCHAR);// 设置输出参数及类型
		cst.registerOutParameter(3, Types.VARCHAR);
		cst.execute();
		System.out.println(cst.getString(2) + "\t" + cst.getString(3));
		
/*		3.调用带既是输入又是输出参数的存储过程
		CREATE OR REPLACE procedure cal (
			m in out number,
			n in out number
		) is
		a number;
		b number;
		begin
			a:=m+n;
			b:=m-n;
			m:=a;
			n:=b;
		end;
*/
		sql = "call cal(?,?)";
		cst = con.prepareCall(sql);
		cst.setInt(1, 58);
		cst.setInt(2, 16);// 设置参数
		cst.registerOutParameter(1, Types.INTEGER);
		cst.registerOutParameter(2, oracle.jdbc.oracore.OracleType.STYLE_INT);
		cst.execute();
		System.out.println(cst.getInt(1) + "\t" + cst.getInt(2));
		cst.close();
		con.close();
	}
}

结果:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值