使用CallableStatement处理Oracle数据库的存储过程

使用CallableStatement处理Oracle数据库的存储过程:
1.预处理SQL语句;
2.使用registerOutParameter方法注册变量数据类型;
3.为每一个“?”赋值;
4.执行操作。


实例:
TestProc.java:

01.import java.sql.*;
02. 
03.public class TestProc {
04. 
05.public static void main(String[] args) {
06.Connection conn = null;
07.CallableStatement cstmt = null;
08.try {
09.Class.forName("oracle.jdbc.driver.OracleDriver");
10.conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:mgc""system""admin");
11.String sql = "{call my_pro_name(?,?,?,?)}";
12.cstmt = conn.prepareCall(sql);
13.cstmt.registerOutParameter(3, Types.INTEGER);
14.cstmt.registerOutParameter(4, Types.INTEGER);
15.cstmt.setInt(16);
16.cstmt.setInt(24);
17.cstmt.setInt(40);
18.cstmt.execute();
19.System.out.println(cstmt.getInt(3));
20.System.out.println(cstmt.getInt(4));
21.catch (ClassNotFoundException e) {
22.e.printStackTrace();
23.catch (SQLException e) {
24.e.printStackTrace();
25.finally {
26.try {
27.if (cstmt != null) {
28.cstmt.close();
29.cstmt = null;
30.}
31.if (conn != null) {
32.conn.close();
33.conn = null;
34.}
35.catch (SQLException e) {
36.e.printStackTrace();
37.}
38.}
39.}
40. 
41.}


proc.sql:
01.create or replace procedure my_pro_name
02.(v_a in number, v_b number, v_ret out number, v_tmp in out number)
03.is
04.begin
05.if(v_a > v_b) then
06.v_ret := v_a;
07.else
08.v_ret := v_b;
09.end if;
10.v_tmp := v_tmp +1;
11.end;
12./
展开阅读全文
©️2020 CSDN 皮肤主题: 技术黑板 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值