Oracle Pl/SQL 中用户定义运算符背后的动机

Posted

技术标签:

【中文标题】Oracle Pl/SQL 中用户定义运算符背后的动机【英文标题】:Motivation behind User-Defined operators in Oracle Pl/SQL 【发布时间】:2014-12-09 09:45:29 【问题描述】:

Oracle 中用户定义运算符的用途是什么?是否存在用户定义的运算符不能替换为(或更优选)存储函数的上下文?

我正在阅读有关 User-Defined operators 的 Oracle 文档,但我真的不明白应该在哪里使用它。

【问题讨论】:

这个问题太宽泛了。 我不同意这个问题过于宽泛。从 Oracle 文档中我不清楚,出于什么原因应该使用用户定义的运算符而不是存储函数(在语法和功能上它们绝对相同)。而且我也看不出任何定义运算符的理由。所以,我可能错过了 Pl/SQL 中的一些主题,它解释了运算符在哪些方面是有益的,因此我想填补这个知识空白。 根据@NicholasKrasnov 的说法,它们没有多大用处:***.com/a/20152667/272735 我倾向于同意。所以不是太宽泛,而是重复的 . @NicholasKrasnov 提到了基于服务器的扩展(索引类型),因此我们可以从他的回答中推断(我们可以吗?)在某些情况下用户定义的运算符是必不可少的。但请注意,他回答了完全不同的问题,即:“是否可以定义中缀运算符”。所以我也不同意我的问题是重复的。 【参考方案1】:

您使用 UDO 而不是函数的唯一真正原因可能是创建索引类型,或为查询提供辅助数据。 CONTAINS 运算符就是一个很好的例子。

也就是说,我自己从来没有使用过它们。

【讨论】:

以上是关于Oracle Pl/SQL 中用户定义运算符背后的动机的主要内容,如果未能解决你的问题,请参考以下文章

Oracle PL/SQL表记录类型

=> 在 oracle pl sql.is 和调用运算符中是啥意思?

关于 Oracle PL/SQL 引号运算符中的换行符:可以更改默认行为吗?

ORACLE PL/SQL编程总结

plsql使用教程

PL/SQL 编程