运行以后不退出,数据库表中没有改变这是我写的存储过程create or replace procedure sp_pro1(spName varchar2,newSal number) is
begin
update emp set sal=newSal where ename=spName;
end;
import java.sql.*;
public class TestOraProcedure { public static void main(String[] args) {
// TODO Auto-generated method stub
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:ORA9I","scott","tiger");
//创建callablestatement
CallableStatement cs = conn.prepareCall("{call sp_pro1(?,?)}");
//给问好赋值
cs.setString(1, "SCOTT");
cs.setInt(2, 6666);
System.out.println("OK");
//执行
cs.execute();
cs.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
begin
update emp set sal=newSal where ename=spName;
end;
import java.sql.*;
public class TestOraProcedure { public static void main(String[] args) {
// TODO Auto-generated method stub
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:ORA9I","scott","tiger");
//创建callablestatement
CallableStatement cs = conn.prepareCall("{call sp_pro1(?,?)}");
//给问好赋值
cs.setString(1, "SCOTT");
cs.setInt(2, 6666);
System.out.println("OK");
//执行
cs.execute();
cs.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
我记错了吗?
update emp set sal:=newSal where ename:=spName;
先用plsql执行以下,看看效果
create or replace procedure sp_pro1(spName IN varchar2,newSal IN number) is
那么这张表就被这个查询锁定了。这种情况下你的事务是执行不过去的。