我有一个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。
提前致谢。
答案 0 :(得分: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;
/