PROCEDURE Query( p_Emp_Number VARCHAR2,
p_Start_Date VARCHAR2,
p_End_Date VARCHAR2,
Errbuf OUT NOCOPY VARCHAR2,
Retcode OUT NOCOPY NUMBER,
p_Record_Set OUT Record_Set) IS
v_Emp_Number VARCHAR2(20);
v_Start_Date DATE;
v_End_Date DATE;
BEGIN
v_Emp_Number := p_Emp_Number;
v_Start_Date := To_Date(Nvl(p_Start_Date, '1900-01-01'), 'YYYY-MM-DD');
v_End_Date := To_Date(Nvl(p_End_Date, '4712-12-31'), 'YYYY-MM-DD'); OPEN p_Record_Set FOR select "a" from dual; Errbuf := '';
Retcode := 0; EXCEPTION
WHEN OTHERS THEN
Errbuf := '出现异常。';
Retcode := 2;
END Query;java代码执行此存储过程:try{
/*省略其他代码,这里的代码绝对没问题,经过千万次考验*/
stmt.execute();}catch (SQLException e) {
flag = stmt.getString(paramLen + 2);
msg = stmt.getString(paramLen + 1);
this.rethrow(e, procName, params);
} finally {
DbUtils.close(rs);
DbUtils.close(stmt);
}
当存储过程执行到EXCEPTION块的时候,抛出异常,于是导致stmt.execute()执行不成功,于是,flag = stmt.getString(paramLen + 2);
msg = stmt.getString(paramLen + 1);均取不到值我改怎样在存储过程抛异常的情况下取得存储过程的OUT值呢?
p_Start_Date VARCHAR2,
p_End_Date VARCHAR2,
Errbuf OUT NOCOPY VARCHAR2,
Retcode OUT NOCOPY NUMBER,
p_Record_Set OUT Record_Set) IS
v_Emp_Number VARCHAR2(20);
v_Start_Date DATE;
v_End_Date DATE;
BEGIN
v_Emp_Number := p_Emp_Number;
v_Start_Date := To_Date(Nvl(p_Start_Date, '1900-01-01'), 'YYYY-MM-DD');
v_End_Date := To_Date(Nvl(p_End_Date, '4712-12-31'), 'YYYY-MM-DD'); OPEN p_Record_Set FOR select "a" from dual; Errbuf := '';
Retcode := 0; EXCEPTION
WHEN OTHERS THEN
Errbuf := '出现异常。';
Retcode := 2;
END Query;java代码执行此存储过程:try{
/*省略其他代码,这里的代码绝对没问题,经过千万次考验*/
stmt.execute();}catch (SQLException e) {
flag = stmt.getString(paramLen + 2);
msg = stmt.getString(paramLen + 1);
this.rethrow(e, procName, params);
} finally {
DbUtils.close(rs);
DbUtils.close(stmt);
}
当存储过程执行到EXCEPTION块的时候,抛出异常,于是导致stmt.execute()执行不成功,于是,flag = stmt.getString(paramLen + 2);
msg = stmt.getString(paramLen + 1);均取不到值我改怎样在存储过程抛异常的情况下取得存储过程的OUT值呢?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货