Как отобразить сообщение об исключении из хранимой процедуры в Crystal Reports?

У меня есть приложение с Crystal Report, которое использует хранимую процедуру от Oracle (я использую Oracle 10g Express Edition). На данный момент, когда из хранимой процедуры выдается исключение, скажем, исключение «деление на ноль», сообщение отображается в окне предупреждения в CR. Я хочу отображать его в отчете, а не в данных. Есть ли способ сделать это?

EXCEPTION
    WHEN ZERO_DIVIDE THEN
        raise_application_error(-20001, 'Division by zero exception');

Вот как я выбрасываю исключение из хранимой процедуры. Затем я связал хранимую процедуру с Data Expert. Я использую REF CURSOR для возврата значения из хранимой процедуры в Crystal Report.

Заранее спасибо.


person Vipin Menon T P    schedule 21.11.2012    source источник
comment
В Crystal Reports есть ли способ поймать исключения SQL? Если это так, вы можете получить код ошибки SQL и на основе кода ошибки вы можете отобразить сообщение, которое хотите.   -  person Jacob    schedule 21.11.2012


Ответы (1)


В Crystal Reports есть ли способ поймать исключения SQL? Если это так, вы можете получить код ошибки SQL и на основе кода ошибки вы можете отобразить сообщение, которое хотите.

Если нет, попробуйте следующий подход, т. е. возвращайте код ошибки и сообщение об ошибке при возникновении исключения.

CREATE OR REPLACE PROCEDURE getemployees (
    p_no                  IN        employees.emp_number%TYPE,
    rcursor               OUT sys_refcursor,
    return_message    OUT VARCHAR2,
    return_code           OUT NUMBER
)
AS
BEGIN
    OPEN rcursor FOR
        SELECT  *
          FROM  employees
         WHERE  emp_number = p_no;

    return_message := NULL;
    return_code := 0;
EXCEPTION
    WHEN ZERO_DIVIDE
    THEN
        return_message := SQLERRM;
        return_code := SQLCODE;
END getemployees;
/
person Jacob    schedule 21.11.2012