为什么我不能返回我在函数参数plsql中传递的值

wz3gfoph  于 2021-08-09  发布在  Java
关注(0)|答案(2)|浏览(328)

好吧,我试着做一个函数,返回传入这个参数的数字的两倍,这个参数是我创建的函数

CREATE or REPLACE FUNCTION fn_double(a number)
return number
IS
begin 
a:=a*2;
return a;
END;
/

出现错误“warning:function created with compilation errors.”(警告:用编译错误创建的函数)。我在如下更改函数时修复了错误:

CREATE or REPLACE FUNCTION fn_double(a number)
return number
IS
nbr number;
begin 
nbr:=a;
nbr:=nbr*2;
return nbr;
END;
/

它现在工作,但我不知道为什么它的工作,我的意思是我只是试图改变它这样,它工作,所以我试图在谷歌搜索为什么我可以返回我在参数传递的数字,但我找不到答案,所以我张贴在这里只是为了我的个人知识为什么我的第一个功能不工作有什么问题吗?

mrzz3bfm

mrzz3bfm1#

函数不需要out参数。只是不能改变in参数的值。这不仅适用于职能,也适用于程序。
您的最后一个函数是正确的,将返回两倍的参数。但是可以缩短。在对局部变量执行操作之前,不需要将in赋值给它。你可以直接操作,而不是左值。您的功能可以简化为:

create or replace 
function fn_double(a number)
  return number
is
begin 
  return 2*a;
end fn_double;
qxgroojn

qxgroojn2#

根据plsql语言参考,子程序不能改变“]值中模式参数的这个[表示]。

相关问题