日期:2014-05-16  浏览次数:21097 次

java 中调用oracle 存储过程到execute()就不执行了
java 中调用oracle 存储过程到execute()就不执行了中间也不报错,存储过程在oracle中调用 测试过没有问题。oracle过程如下:

CREATE or replace procedure test_emp(aename VARCHAR2,asal NUMBER) IS
BEGIN
UPDATE emp set sal=asal where ename=aename;
end;


java代码如下:

package com.oracle.db;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;

public class OraclePro {
public static void main(String[] args) {

try{
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn=DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:ORCL","scott","admin");
CallableStatement st=conn.prepareCall("{call test_emp(?,?)}");
st.setString(1, "SCOTT");
st.setInt(2,123);

System.out.println("执行");
st.execute();
System.out.println("OK");
st.close();
conn.close();
}catch (Exception e){
System.out.println("失败");
e.printStackTrace();
}
}

}

oracle 是10g的 驱动是classes12.jar和ojdbc14.jar
------解决方案--------------------
不执行是什么意思?卡死在这句
单步调试一下试试
另外你的存储过程执行后,没有COMMIT操作
------解决方案--------------------
会不会你当时执行的时候,有锁等待?
------解决方案--------------------
加上commit呗,如果是表问题的话,可以尝试把表数据copy到另一个表中,把这个表数据truncate再复制回来,前几天刚遇到过程卡死问题,进行dml操作都要commit的,你调试的时候都可以看得到如果没有commit,等你过程调试完了,pl/sql上面出现一个提交事务的,记得养成好习惯哦!