我创建了存储过程,
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,'后台报错了' 这数据

解决方案 »

  1.   

    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;
    /
      

  2.   

    貌似用的plsql。在Oracle中可以用到一门面向结果的语言!