【问题标题】:What is the syntax to define an Oracle procedure within an another stored procedure?在另一个存储过程中定义 Oracle 过程的语法是什么?
【发布时间】: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


【解决方案1】:
create or replace
PROCEDURE TOP_PROCEDURE
(...)
IS
   variable NUMBER;
   PROCEDURE nested_procedure (...)
   IS
   BEGIN
     NULL;
   END;
   PROCEDURE another_nested_procedure (...)
   IS
   BEGIN
     NULL;
   END;
BEGIN
  NULL;
END;

本地过程必须在其他任何内容(例如变量)之后声明。

【讨论】:

  • 简单快速的回答。太棒了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-10-12
  • 1970-01-01
  • 2011-05-08
  • 2011-03-25
  • 2010-09-09
  • 2022-08-14
  • 2023-03-05
相关资源
最近更新 更多