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

在线等publicintcalculateTimeInterval(Integerid){con=SqlHelper.connect();try{statement=co... 在线等
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数据库,还有两个调用存储函数的,存储函数可以返回正确的值,存储过程就不行,我真是醉了。
展开
 我来答
匿名用户
2015-04-25
展开全部
你通过JDBC这种方式调用存储过程,应该使用 CallableStatement 类, CallableStatement cs=conn.prepareCall(str);

补充一句,避免你在执行有错,
cs.excuse();这个方法为执行,然后在获取输出参数。另外写输出参数的类型时,直Types.类型即可,不用带包。
更多追问追答
追问
我就是使用这个类啊
追答
你的statement = con.createStatement();代码,还有最后的cs.executeUpdate什么情况?
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式