gpt4 book ai didi

function - PL/SQL 将函数作为参数传递

转载 作者:行者123 更新时间:2023-12-02 19:00:15 26 4
gpt4 key购买 nike

我已经用 PL/SQL 编程了半年,我的印象是它是一种非常简单的编程语言(恕我直言)。尽管我偶然发现了一些有趣的文章,例如这篇文章 - Design Patterns in PL/SQL – Interface Injection for even looser coupling ,我推荐阅读。谈到依赖注入(inject),我错过了一个特殊功能:将子例程作为参数传递。是否可以?怎么办?

例如,假设我在 javascript 中有这样的代码:

function tell_me (printer) {
printer ("hello");
}

tell_me (function () {
console.log (word);
});

是否可以在 PL/SQL 中执行类似的操作?

最佳答案

您不能直接将函数作为参数传递。您能做的最好的事情就是使用动态 PL/SQL 来执行作为字符串传入的函数。我不推荐这个。我可以在少数情况下看到动态 PL/SQL 的使用,但这会给您带来各种各样的问题。

DECLARE 
PROCEDURE inner_function
IS
BEGIN
dbms_output.put_line('Output');
END;

PROCEDURE tell_me(parm_function varchar2)
IS
BEGIN
EXECUTE IMMEDIATE 'BEGIN '||parm_function||'(); END;';
END;

BEGIN
tell_me('inner_function');
END;

DBMS_OUTPUT 缓冲区中应该只有“输出”。

这可能不起作用,因为 inner_function 可能超出范围。在这种情况下,请在架构本身中定义过程。

关于function - PL/SQL 将函数作为参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11130610/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com