create procedure hcf2(a in number,b in number) return number as
begin
if b = 0 then
return a;
else
return hcf2(b,mod(a,b));
end if;
end;
错误
LINE/COL ERROR
-------- -----------------------------------------------------------------
1/41 PLS-00103: Encountered the symbol "RETURN" when expecting one of
the following:
; is with authid as cluster order using external
deterministic parallel_enable pipelined result_cache
The symbol "authid was inserted before "RETURN" to continue.
答案 0 :(得分:1)
基本上你在这里尝试的是使用Function而不是Procedure。 可以通过两种方式使用 RETURN 语句。一个在 FUNCTION 中,它确定Functon的返回类型。 第二种类型,Oracle服务器立即将执行控制发送回直接调用代码或主机环境。在 RETURN 语句后的块中不会处理其他语句。
create or replace function hcf2(a in number,b in number) return number as
begin
if b = 0 then
return a;
else
return hcf2(b,mod(a,b));
end if;
end;
答案 1 :(得分:1)
<强>表达强>
当RETURN语句位于流水线表函数中时可选。 RETURN语句在任何其他函数中时是必需的。 不会 当RETURN语句在过程中或匿名时允许 块。强>
由于您正在尝试创建过程,因此您无法在RETURN语句中使用表达式。