是否可以在 PL/SQL 开发人员测试窗口的“声明”块中声明子过程?

Posted

技术标签:

【中文标题】是否可以在 PL/SQL 开发人员测试窗口的“声明”块中声明子过程?【英文标题】:Is it possible to declare a subprocedure in the 'declare' block of PL/SQL developer test window? 【发布时间】:2020-03-12 16:23:16 【问题描述】:

我需要测试一个在is 块中有多个子过程的存储过程。我已将所有内容复制到测试窗口,但是,将这些子过程放在 declare 块中似乎不起作用。当我尝试从 begin 块中调用它们时,我收到一条错误消息,指出它们尚未被声明。除了将is 的内容移动到declare 之外,我没有进行任何更改。我能做什么?

【问题讨论】:

更新问题并发布代码,以便我们能够为您提供帮助。 【参考方案1】:

您可以声明过程,但是:

1) 您声明它时没有“创建或替换”关键字 2) 如果在同一个块中声明任何变量,所有的过程和函数必须在最后一个变量声明之后声明。

例如,这个:

declare

   some_text varchar2(10) := 'SOME_TEXT';

   procedure print_4 is 

      x number := 4;
   begin
      dbms_output.put_line(x);
   end print_4;
begin
   print_4;
end;

是一个有效的 pl/sql 块,而这个:

declare

   procedure print_4 is 

      x number := 4;
   begin
      dbms_output.put_line(x);
   end print_4;

   some_text varchar2(10) := 'SOME_TEXT';
begin
   print_4;
end;

不是。

如果您发布代码,我们可能会发现一些其他错误。

【讨论】:

以上是关于是否可以在 PL/SQL 开发人员测试窗口的“声明”块中声明子过程?的主要内容,如果未能解决你的问题,请参考以下文章

SQL 开发人员单元测试错误?

PL/SQL oracle,使用日期和时间的测试窗口

在 PL/SQL 中捕获 SQL/开发人员脚本输出

什么是PL/SQL

使用PL/Scope分析PL/SQL代码

匿名 pl/sql 块中的声明顺序