【发布时间】:2010-12-28 02:42:29
【问题描述】:
经过多次 Google 和 SO 搜索,我找不到这个简单问题的明确答案:
如何在另一个过程中定义一个过程来使用?
我知道有嵌套块和嵌套过程,但我还没有看到我想要的确切语法。即
create or replace
PROCEDURE TOP_PROCEDURE
(...)
IS
-- nested procedure here?
BEGIN
NULL;
END;
【问题讨论】:
-
托尼的回答很到位,但我不得不问你为什么要这样做。我见过使用嵌套过程,但从未见过它们使用得很好。也就是说,您几乎总是最好将过程放在一个包中(如果它还没有在一个包中)并在包中为嵌套过程创建私有方法。否则,遵循代码会变得相当混乱,并导致实际上让所有 TOP_PROCEDURE 的局部变量在嵌套过程的上下文中都是全局变量的相当糟糕的做法。
-
我经常使用嵌套过程 - 通常用于非常特定于其父过程的小函数(即它们只是没有任何意义被其他任何东西调用),否则我会在父过程中多次重复相同的代码。
-
您的观点绝对是有效的 Justin,但实际上我只是按照 Jeffrey 指定的方式使用它。这也是一个出于好奇的问题。这是重构我的代码的快速方法。
标签: oracle stored-procedures plsql