oracle 过程 重新编译也无效
发布网友
发布时间:2022-04-10 08:22
我来回答
共1个回答
热心网友
时间:2022-04-10 09:51
编译完成,不代表里面语句没问题,这种情况是存储过程里存在某种错误
在 SQL *Plus 或者 PL/SQL Developer 的 Command Windows 中,执行
show errors procere USP_EXCEPTION;
查看一下错误是什么.
我的修改如下:
CREATE OR REPLACE PROCEDURE USP_EXCEPTION(EMPNO INTEGER, --批次ID
P_FM NUMBER, --分母
P_FZ NUMBER, --分子
P_RESULT OUT NUMBER --结果
) IS
V_RAISE EXCEPTION; --异常处理
type type_table_pcmx is varray(4) of varchar2(20);
TABLE_PCMX type_table_pcmx;
BEGIN
IF P_FZ = 0 THEN
RAISE V_RAISE;
END IF;
P_RESULT := P_FM / P_FZ;
SELECT ENAME, EMPNO, JOB, DEPTNO
INTO TABLE_PCMX(1),TABLE_PCMX(2),TABLE_PCMX(3),TABLE_PCMX(4)
FROM EMP
WHERE EMPNO = EMPNO;
EXCEPTION
WHEN V_RAISE THEN
RAISE_APPLICATION_ERROR(-20010, 'ERROR:分子为零!');
WHEN NO_DATA_FOUND THEN
RAISE_APPLICATION_ERROR(-20011, 'ERROR:批次明细不存在!');
WHEN OTHERS THEN
RAISE_APPLICATION_ERROR(-20012, 'ERROR:数据错误!');
END;