最近突燃 想到 学习一下存储过程,因为往往 在面试过程中好多面试官 都会问到这个问题,所以在这里一边从网上找例子(大多数例子运行不起来(可能是我的原因))
好了废话不多说了 先来无返回值的存储过程
首先 建存储过程 在pl sql 中 执行以下代码
create or replace procedure TESTA(PARA1 IN VARCHAR2,PARA2 IN VARCHAR2)
AS
BEGIN
INSERT INTO TESTTB(I_ID,I_NAME) VALUES (PARA1, PARA2);
END TESTA;
当然 在上述执行代码之前 必须新建一个数据库表TESTTB 字段有I_ID,I_NAME两个字段
以上操作完成之后 写java 类 代码如下
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class TestProcedureOne {
public TestProcedureOne() {
}
public static void main(String[] args ){
String driver = "oracle.jdbc.driver.OracleDriver";
String strUrl = "jdbc:oracle:thin:@192.168.0.200:1521: orcl ";
Statement stmt = null;
ResultSet rs = null;
Connection conn = null;
CallableStatement cstmt = null;
try {
Class.forName(driver);
conn = DriverManager.getConnection(strUrl, " hn628 ", " 123456 ");
CallableStatement proc = null;
proc = conn.prepareCall("{ call TESTA(?,?) }");
proc.setInt(1, 100);
proc.setString(2, "TestOne");
proc.execute();
}
catch (SQLException ex2) {
ex2.printStackTrace();
}
catch (Exception ex2) {
ex2.printStackTrace();
}
finally{
try {
if(rs != null){
rs.close();
if(stmt!=null){
stmt.close();
}
if(conn!=null){
conn.close();
}
}
}
catch (SQLException ex1) {
}
}
}
}
运行 经过测试 成功