首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

java 中调用oracle 存储过程到execute()就不执行了,该如何处理

2014-04-26 
java 中调用oracle 存储过程到execute()就不执行了java 中调用oracle 存储过程到execute()就不执行了中间

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上面出现一个提交事务的,记得养成好习惯哦!

热点排行