gpt4 book ai didi

sql - Oracle 过程立即执行

转载 作者:行者123 更新时间:2023-12-02 07:00:42 24 4
gpt4 key购买 nike

我在SYS下有一个存储过程,它使用EXECUTE IMMEDIATE命令来执行alter object compile。但我收到以下错误。

CREATE OR REPLACE PROCEDURE comp_inv
is
CURSOR empCursor IS
SELECT object_type,
owner,object_name
from dba_objects
where status = 'INVALID'
and object_type in ('PACKAGE','FUNCTION','PROCEDURE');
BEGIN
FOR i_rec IN empCursor LOOP
execute immediate 'alter ' ||i_rec.object_type|| ' ' ||
i_rec.owner || '.' || i_rec.object_name || ' compile';
END LOOP;
END;
/
SQL> exec comp_inv;
ERROR:
ORA-24344: success with compilation error
ORA-06512: at "SYS.COMP_INV", line 8
ORA-06512: at line 1


Warning: PL/SQL compilation errors.

SQL> show errors procedure comp_inv;
No errors.

最佳答案

您可以使用标准的 Oracle 程序包 DBMS_UTILITY 及其过程 COMPILE_SCHEMA(),它为您提供了重新编译无效对象的标准方法。出于多种原因值得使用它,特别是它允许您保留编译设置。

关于sql - Oracle 过程立即执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21545341/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com