是否可以在包主体块之外定义包过程/功能(对于 Oracle)?
定义包体的简化语法是:
create or replace package body <package_name> IS
function <function_name>
<function_body>
procedure <procedure_name>
<procedure_body>
end <package_name>;
/
是否可以在包中定义程序,例如:
procedure <package_name>.<procedure_name>
<procedure_body>
我问这个问题,因为我是新手,不明白为什么我只需要从单个程序中应用更改时需要编译整个包......
有关的
- 包相对于独立的过程和函数有什么好处?
- https://stackoverflow.com/questions/1812049/performance-standalone-procedure-vs-packaged-procedure-in-oracle
汤姆说:
- 始终使用包。
- 除了演示、测试和独立实用程序(什么都不调用并且什么都不调用)之外,永远不要使用独立的过程
您总是需要编译整个包体——它是一项代码。您可以在其他过程中创建函数和过程,但这不会改变重新编译包体的需要。
你想在这里解决什么问题?
不在那里。但是你的想法是个好主意......
在作为 PL/SQL 起源的 Ada 中,您可以将包体的一部分(如过程)定义为“单独的”。
这将允许您分解过长的包体(在 Ada 中)而不会丢失内部变量等。
绝对希望在 PL/SQL 中看到它。