存储过程的sql:
--插入的存储过程
create or replace procedure sp_test(emp_name in varchar2,dept_no in number)
as
begin
declare max_empno number;
begin
if(emp_name is null or length(emp_name)=0) then
return ;
end if;
if(dept_no!=60) then
return ;
end if;
select max(empno) into max_empno from emp_copy;
insert into emp_copy(empno,ename,deptno) values(max_empno+1,emp_name,dept_no);
end;
end sp_test;
-- 删除的存储过程
create or replace procedure dele_emp (e_name in varchar2) as
begin
delete emp_copy where ename = e_name;
end dele_emp;
--更新的存储过程
CREATE OR REPLACE PROCEDURE update_emp(emp_no in number,emp_name IN VARCHAR2) AS
BEGIN
UPDATE emp_copy SET ename = emp_name where empno=emp_no;
END update_emp;
Java调用存储过程如下:
package com.accord.test;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
/**
* @author 王久印
* 2018年7月13日
* 测试存储过程
*/
public class TestProcedure {
private static String DRIVER = "oracle.jdbc.OracleDriver";
private static Connection con = null;
public static void main(String[] args) throws Exception {
//插入数据
/*CallableStatement proc = getJdbcConnect().prepareCall("{call fa65yz.sp_test(?,?)}");
proc.setString(1, "张三三");
proc.setInt(2, 60);
proc.execute();
closeConnection();*/
//删除数据
/*CallableStatement proc = getJdbcConnect().prepareCall("{call fa65yz.dele_emp(?)}");
proc.setString(1, "张三三");
proc.execute();
closeConnection();*/
//更新数据
CallableStatement proc = getJdbcConnect().prepareCall("{call fa65yz.update_emp(?,?)}");
proc.setInt(1, 1);
proc.setString(2, "王五");
proc.execute();
closeConnection();
}
public static Connection getJdbcConnect() throws Exception {
String url = "jdbc:oracle:thin:@//" + "10.10.2.11" + ":1521/" + "ncdb";
Class.forName(DRIVER);
con = DriverManager.getConnection(url, "fa65yz", "fayz65_");
System.out.println("连接成功");
return con;
}
// 关闭数据库连接
public static void closeConnection() {
try {
con.close();
System.out.println("关闭成功");
} catch (SQLException e) {
e.printStackTrace();
}
}
}