怎么在java中得到oracle中RAISE_APPLICATION_ERROR异常信息?郁闷中。。。

zhuzhenhong1987 2010-04-29 05:39:20
我创建了存储过程,
CREATE OR REPLACE PROCEDURE HR.secure_dml
IS
BEGIN
IF TO_CHAR (SYSDATE, 'HH24:MI') NOT BETWEEN '08:00' AND '18:00'
OR TO_CHAR (SYSDATE, 'DY') IN ('SAT', 'SUN') THEN
RAISE_APPLICATION_ERROR (-20205,'后台报错了');
END IF;
END secure_dml;

怎么在java中得到RAISE_APPLICATION_ERROR的异常信息呢?就是
-20205,'后台报错了' 这数据
...全文
615 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
huangminyanghe 2010-04-29
  • 打赏
  • 举报
回复
貌似用的plsql。在Oracle中可以用到一门面向结果的语言!
  • 打赏
  • 举报
回复
crazylaa 2010-04-29
  • 打赏
  • 举报
回复
catch java.sql.SQLException的code和message?具体还真没试过去获得特定代码以及消息。。。。。我一般是定义一个输出参数,出错给输出参数赋值。在程序中获得输出参数的值也就知道是什么错误了。比如:

create or replace procedure proc_del_series(
in_series_id IN dat_ct_series.series_id%TYPE,
in_user_id IN dat_ct_administrator.user_id%TYPE,
out_flag OUT number
)
AS
var_log_id dat_ct_log.log_id%TYPE;
begin

--修改漫画系列表
update dat_ct_series set
status = 'N'
where series_id = in_series_id;

if SQL%NOTFOUND then
out_flag := -1; -- 不存在
else
--记录删除系列的日志
select to_number(to_char(sysdate,'yyyyMMddHH24MISS')||trim(to_char(seq_general_id.nextVal,'0000000000000000')))
into var_log_id from dual;

insert into dat_ct_series_log(
log_id,
series_id,
operate_time,
operator,
operate_type,
status)
values (
var_log_id,
in_series_id,
SYSTIMESTAMP,
in_user_id,
'SETN',
'A');
end if;
out_flag := 0;

Exception when others then
out_flag :=-2; -- 其他错误
end proc_del_series;
/

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧