0

我有一个带有 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。

提前致谢。

4

1 回答 1

0

在 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;
/
于 2012-11-21T11:01:37.550 回答