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

1 oracle plsql plsqldeveloper

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

pie*_*zol 6

您可以声明程序,但是:

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;
Run Code Online (Sandbox Code Playgroud)

是一个有效的 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;
Run Code Online (Sandbox Code Playgroud)

不是。

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