伙计们,我正在尝试重载 Oracle 11gR2 中包中的函数。
函数是这样的。
Function is_h2h(p_param in number) return boolean
is
begin
--some code here
return true;
end;
Function is_h2h(p_param in number) return number
is
begin
--some code here
return 1;
end;
所以问题是当我在另一个过程中编写 if
语句时
if is_h2h(some_param) then --code goes
end if;
编译器返回PLS-00307:太多“IS_H2H”声明与此调用匹配
。
那么如何实现这种重载呢?
最佳答案
您需要使签名不同(忽略返回类型),否则编译器不会为您选择。
我的第一选择是给函数起不同的名称,例如:
function is_h2h_b(p_param in number) return boolean...
function is_h2h_n(p_param in number) return number...
如果您真的非常想使用相同的名称,则可以使用不同的参数名称 - 但这样您就只能使用命名参数(请注意,无论如何,这是一个很好的做法):
function is_h2h(p_param_b in number) return boolean...
function is_h2h(p_param_n in number) return number...
if is_h2h(p_param_b => some_param) then...
关于oracle - pl/sql 中的重载问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32882234/