今天有客户提供了两个procedure的名字,让我帮忙查看是不是存在。
按照其说法,这两个procedure应该存在,但是现在需要改成新的名字,他想看看是不是已经改了。
于是我就去了dba_objects里面查了,后来发现这种做法很不专业啊,应该去dba_procedures里面查。
因为procedure可能是包含在package里面的,这种procedure在dba_objects里面是查不到的。
查到了之后发现procedure的名字没有更新。我想是不是可以手都的改了呢?
后来查了一下,不可以。必须采用新的package创建脚本来重新创建这个package,附带着改变里面的procedure名字。
从 pl/sql language reference里面看到这么一句话,意思是package里面的functions,procedure 等都是整体,不可单独改变。
Because all objects in a package are stored as a unit, the ALTER PACKAGE statement recompiles all package objects. You cannot use the ALTER PROCEDURE statement or ALTER FUNCTION statement to recompile individually a procedure or function that is part of a package.
本文探讨了在Oracle数据库中如何查找Procedure的存在状态,并强调了使用dba_procedures而非dba_objects进行搜索的专业做法。同时,文章详细解释了Procedure作为Package一部分时的修改限制,即无法直接更改名称,而需通过重建整个Package来实现。
814

被折叠的 条评论
为什么被折叠?



