是否可以在 PL/SQL 开发人员测试 window 的 'declare' 块中声明子过程?
Is it possible to declare a subprocedure in the 'declare' block of PL/SQL developer test window?
我需要测试在 is
块中有多个子过程的存储过程。我已将所有内容复制到测试 window,但是,将这些子过程放在 declare
块中似乎不起作用。当我尝试从 begin
块中调用它们时,我收到一条错误消息,指出它们尚未声明。除了将 is
的内容移动到 declare
之外,我没有做任何更改。我能做什么?
您可以声明过程,但是:
1) 您声明它时没有 'create or replace' 关键字
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;
不是。
如果您 post 您的代码,我们可能会发现一些其他错误。
我需要测试在 is
块中有多个子过程的存储过程。我已将所有内容复制到测试 window,但是,将这些子过程放在 declare
块中似乎不起作用。当我尝试从 begin
块中调用它们时,我收到一条错误消息,指出它们尚未声明。除了将 is
的内容移动到 declare
之外,我没有做任何更改。我能做什么?
您可以声明过程,但是:
1) 您声明它时没有 'create or replace' 关键字
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;
不是。
如果您 post 您的代码,我们可能会发现一些其他错误。