【发布时间】:2012-06-23 05:48:39
【问题描述】:
我已经用 PL/SQL 编程了半年,我的印象是它是一种非常简单的编程语言(恕我直言)。虽然我偶然发现了一些有趣的文章,比如这篇文章 - Design Patterns in PL/SQL – Interface Injection for even looser coupling,但我还是推荐阅读。谈到依赖注入,我错过了一个特殊的功能:将子例程作为参数传递。可能吗?怎么样?
例如,假设我在 javascript 中有这样的代码:
function tell_me (printer) {
printer ("hello");
}
tell_me (function () {
console.log (word);
});
是否可以在 PL/SQL 中做类似的事情?
【问题讨论】:
-
如果您需要在 PL/SQL 中将子例程作为参数传递,您可能应该重新检查您的问题 - 真的需要在 PL/SQL 中解决吗??
-
@NWest,你是对的,尽管这是松散耦合两个子例程的一种可能方式。事实上,我是出于好奇才问的,只是为了探索更多关于 PL/SQL 的细节。
-
@NWest,我引用了反射式编程,这是一个实际问题(我知道我有点偏离,但值得):我的 pl/sql 模块应该调用一个带有大量 XML 的 REST API .我不想手动构建每个 XML,所以我将每个实体映射到一个 TYPE 中。是否可以在不知道已传递给我的例程的类型的情况下获取类型的字段,在运行时更改它们?有了它,我可以构建一个模块来将 XML 转换为 PL/SQL 类型(反之亦然)。 API 类型的更改只需要维护 PL/SQL 类型,而不是为每种类型维护整个一个转换函数。
标签: function parameters plsql functional-programming