我的是oracle 11g的数据库,连接的scott用户。使用的是scott的emp表。
package oracle_sp_test;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
/**
* 演示java程序去调用oracle的存储过程的案例
* @author TF
*
*/
public class TestOraclePro {
public static void main(String[] args) {
try {
//1.加载驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
//2.得到链接
Connection conn = DriverManager.getConnection(
"jdbc:oracle:thin:@localhost:1521:orcl", "scott", "0108");
//3.创建CallableStatement对象
CallableStatement cs = conn.prepareCall("{call sp_pro1(?,?)}");
//4.给?赋值---1 代表第一个?的参数---2 代表第二个?的参数
cs.setString(1, "SMITH");
cs.setInt(2, 10);
//5.执行
cs.execute();
//6.关闭流
cs.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
运行java代码,发现SMITH用户以前的工资是800,再次查询工资为10。
其中的call sp_pro1(?,?)---sp_pro1是我自己创建的存储过程。