oracle如何编译无效,oracle编译无效对象

如何重编译ORACLE数据库的无效对象

如果无效对象的数量很少,那么你可以逐个编译这些对象.

10年积累的成都网站设计、网站制作经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站策划后付款的网站建设流程,更有阳春免费网站建设让你可以放心的选择与我们合作。

ALTER PACKAGE my_package COMPILE;

ALTER PACKAGE my_package COMPILE BODY;

ALTER PROCEDURE my_procedure COMPILE;

ALTER FUNCTION my_function COMPILE;

ALTER TRIGGER my_trigger COMPILE;

ALTER VIEW my_view COMPILE;

oracle 过程 重新编译也无效

编译完成,不代表里面语句没问题,这种情况是存储过程里存在某种错误

在 SQL *Plus 或者 PL/SQL Developer 的 Command Windows 中,执行

show errors procedure 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;

如何在Oracle中重编译所有无效的存储过程

:在SQL_PLUS中:spool ExecCompProc.sql select 'alter procedure ' ||object_name||' compile;' From all_objects where status = 'INVALID' and object_type = 'PROCEDURE'; spool off @ExecCompProc.Sql;整理成一个存储过程:Create Or Replace Procedure Zl_Compile_Invalid_Procedure AsStrsql Varchar2(200);BeginFor x In (Select Object_Name From All_Objects Where Status = 'INVALID' And Object_Type = 'PROCEDURE') LoopStrsql := 'Alter Procedure ' || x.Object_Name || ' Compile';Begin Execute Immediate Strsql; Exception--When Others Then Null; When OTHERS Then dbms_output.put_line(Sqlerrm); End;End Loop;End;最后执行:exec Zl_Compile_Invalid_Procedure;如果要看到无法重编译的过程的出错信息,需要执行前设置set serverout on。


分享标题:oracle如何编译无效,oracle编译无效对象
本文网址:http://scyanting.com/article/hccgsi.html