----建立的存储过程 create or replace procedure addTest(v1 in number, v2 in number,res out number) as begin res := v1 + v2; end addTest;
----PLSQL中调用存储过程addTest declare rest number; begin addTest(2,33,rest); dbms_output.put_line('计算结果: '||rest); end;
执行结果 java
Java代码中调用存储过程addTest
package com.callProcedure; import java.sql.CallableStatement; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Types; public class CallSimpleProcedure { public static void main(String[] args) { // 加载驱动 try { Class.forName("oracle.jdbc.driver.OracleDriver"); // 获取连接 Connection conn = DriverManager.getConnection( "jdbc:oracle:thin:@IP地址:1521:数据库名称", "数据库登陆名", "数据库登陆密码"); // 获取调用存储过程的对象 CallableStatement cs = conn.prepareCall("{call addTest(?,?,?)}"); // 为存储过程参数赋值 cs.setInt(1, 23);// 输入值 cs.setInt(2, 20);// 输入值 cs.registerOutParameter(3, Types.NUMERIC);// 输出值类型 // 执行 cs.execute(); // 获取输出值 int result = cs.getInt(3); System.out.println("java 调用存储过程获取输出值:\t" + result); // 关闭链接 conn.close(); } catch (ClassNotFoundException e) { System.out.println(e.getMessage()); } catch (SQLException e) { System.out.println(e.getMessage()); } } }
执行结果: sql