oracle - pl/sql 中的重载问题

标签 oracle plsql overloading

伙计们,我正在尝试重载 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/

相关文章:

sql - oracle插入很慢

sql - 重复分析

C++ 为谓词和值重载 std::count_if()

java - HTTP 状态 500 - servlet appServlet 的 Servlet.init() 在 spring MVC 中抛出异常

Oracle - 找不到长时间运行的查询

java - 以最小的开销插入两个表

oracle - 从 JDBC 调用 Oracle 面向对象的 PL/SQL 成员过程

oracle - 从 sqlplus 显示 pl/sql 中的动态 EXECUTE 输出

java - 重载java

powershell - 如何在 Powershell 中从 .net 框架调用重载的静态方法?