----创建的存储过程
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代码中调用存储过程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());
}
}
}
执行结果: