java调用oracle存储过程返回值_java调用oracle存储过程无法获得正确的返回值,每次都是0...

在线等publicintcalculateTimeInterval(Integerid){con=SqlHelper.connect();try{statement=con.createStatement();cs=con.prepareCall("callCALCULATETIME(?,?)");cs.setInt(1,id);c...

在线等

public int calculateTimeInterval(Integer id) {

con = SqlHelper.connect();

try {

statement = con.createStatement();

cs = con.prepareCall("call CALCULATETIME(?,?)");

cs.setInt(1,id);

cs.registerOutParameter(2, oracle.jdbc.OracleTypes.INTEGER);

cs.executeUpdate();

Integer result = cs.getInt(2);

if(result==-1){

System.out.println("出错,返回结果出错");

}else{

return result;

}

} catch (SQLException ex) {

ex.printStackTrace();

}

finally{

try {

cs.close();

statement.close();

con.close();

} catch (SQLException ex) {

ex.printStackTrace();

}

}

return -1;

}

下面是这个存储过程,在plsql下如果brid为1的话,返回值应该是1,但是java中始终返回0

CREATE OR REPLACE procedure calculateTime(brid in NUMBER,timequality out INTEGER)

as

intime date;

outtime date;

begin

select br_outdate,br_indate into outtime,intime from borrowreturn where br_id= to_char (brid);

--timequality:=ceil((To_date(intime , 'yyyy-mm-dd hh24-mi-ss') - To_date(outtime, 'yyyy-mm-dd hh24-mi-ss')));

select ceil((To_date(intime , 'yyyy-mm-dd hh24-mi-ss') - To_date(outtime, 'yyyy-mm-dd hh24-mi-ss'))) into timequality from dual;

--DBMS_OUTPUT.PUT_LINE('the interval of time is '||timequality);

EXCEPTION

WHEN OTHERS THEN

DBMS_OUTPUT.PUT_LINE('error');

end;

是这样的,statement = con.createStatement();这句话是我写着玩的,cs是callableStatement对象,整个过程调用在java中并无报错,并且存储过程没有错误,我已经在oracle的sqlplus中进行测试,

总结着说,就是存储过程正确,java调用不报错,但是结果是错误的,应该是1,我怀疑是传入错误,brid in NUMBER这句我该成brid in varchar,非2后setString也会出错,你说奇怪不奇怪!如果您能帮助我解决我将感激不尽,100分献上

对了,我是用的oracle数据库,还有两个调用存储函数的,存储函数可以返回正确的值,存储过程就不行,我真是醉了。

展开

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值