忽略PL / SQL函数的返回值

有时,我调用PL / SQL函数来接收和处理它返回的值。其他时候,我只想为副作用调用同一函数。

例如,考虑一个日志记录函数,该函数将其参数记录在表中,然后返回使用相同参数创建的格式化字符串。有时我想使用返回的值,例如为了将其显示给用户,其他时候我只是调用表记录功能,而忽略返回值。在后一种情况下,我想避免声明一个变量来保存返回的值并编写一条assigment语句。

This question触及主题,答案似乎是调用者必须使用该函数返回的值,无论是通过赋值语句还是select into

是否可以在PL / SQL中调用函数并丢弃返回的值?

feng0905 回答:忽略PL / SQL函数的返回值

  

分配变量,然后对其不执行任何操作,都会产生代码错误

如果我们在谈论代码的味道,那么拥有改变数据库状态的功能就有点奇特。惯例是过程更改状态,而函数仅读取状态。

因此,以您的示例为例,您可以将日志记录功能实现为记录程序包中的两个重载过程。

procedure log_this(p1_in number,p2 in timestamp,p_fmt_txt out varchar2);

procedure log_this(p1_in number,p2 in timestamp);

在程序包主体中,第二个过程仅调用第一个过程并吞下out参数。

现在,您可以根据是否要查看格式化的字符串来调用适当的过程。

当然,如果要在SELECT语句中调用函数,则此解决方案将不起作用,但是通过查询更改数据库状态确实是一种代码味道。

本文链接:https://www.f2er.com/3160708.html

大家都在问