当前位置: 首页 > 面试题库 >

创建具有左侧/右侧的用户定义的运算符

范承教
2023-03-14
问题内容

我开始使用pl / sql开发Oracle运算符。指南中有一些示例,但现在我继续介绍。

在我所看到的所有示例中,始终都是这样的:

CREATE OPERATOR Contains 
   BINDING (VARCHAR2, VARCHAR2) 
    RETURN NUMBER 
     USING text.contains;

我们在WHERE子句中这样使用它:

SELECT * 
  FROM MyEmployees 
 WHERE Contains(resume, 'Oracle') = 1;

是否可以创建一个像=, +, ...左侧和右侧一样使用的运算符?

在这种情况下:

SELECT * 
  FROM MyEmployees 
 WHERE resume Contains 'Oracle'

谢谢你的帮助。

编辑:我知道它可以与PostgreSQL,但没有找到Oracle
http://www.postgresql.org/docs/current/static/sql-
createoperator.html


问题答案:

摘自您的评论到@ ajmalmhd04答案

我真的很想像内置(=,+ …)一样使用我的运算符

是的,文档在定义用户定义的运算符的方式上有些混乱,尤其是这部分:

用户定义的运算符的行为类似于诸如<,>和=的内置运算符;

不幸的是,这意味着您可以使用用户定义的运算符,其中(大多数情况下)您可以使用内置运算符,但使用方式不同于(operand1 OPERATOR operand2例如)使用内置运算符,例如<=。用户定义的运营商,如果不看他们非常非常密切的,是调用函数不同之处在于,他们(运营商)只能在DML语句中使用(不同的方式selectinsert等等)。您将无法仅通过DML直接在PL
/ SQL中使用它们。因此,在PL / SQL中这样的结果将导致PLS-00548: invalid use of operator.

if operator(<<arguments>>) = 1 then
  -- something
end if;

如果您不参与开发基于应用程序的特定于服务器的扩展(数据盒式磁带),例如索引类型,而我个人不可见,那么创建和使用运算符的好处。无法想到可以使用运算符而不能使用函数的情况。相反,这是不正确的。您可能会将运算符具有多个绑定的能力视为将其用作重载函数的一种方式。但是,另一方面,您可以使用软件包轻松实现相同目的。



 类似资料:
  • 问题内容: 这个问题源于-其他解包概述,据我所知,它存在于Python 3.5中(并且没有反向移植到)。具体来说,在“ 缺点 ”部分中,注意以下几点: 虽然原因是一, ,原因是一个。这样做的原因可能会使不熟悉该结构的人感到困惑。 对于第一种情况,确实确实存在: 在第二种情况下,创建了: 不熟悉这个概念,我很困惑。谁能解释这种行为?加星标的表情是否会根据其所在的侧面而有所不同? 问题答案: 当还考虑

  • 我的问题是:如何确定已拆分的旋转矩形几何体的和是拆分该几何体的任意的“左”和“右”边? 对于这个问题,"左"和"右"被定义为从节点到节点"行走"时,按顺序的拆分器的左边和右边。 我创建了此函数,用于将任意几何体(非集合)拆分为两个面——“左”和“右”: 上面的想法在此处链接的笔记本中进行了说明(与上面的链接相同): http://nbviewer.jupyter.org/urls/dl.dropb

  • 无论如何,条件查询应该根据提供的与表中的颜色不匹配的表(可以是联接查询、子查询或其他任何内容),从表中提取颜色列表。

  • 问题内容: 任何方法都可以在左右两侧(水平?)获得箱形阴影,而没有任何骇客或图像。我在用: 但它给周围的阴影。 我周围没有边界。 问题答案: 注意: 我建议您在下面查看@Hamish的答案;它不涉及此处描述的解决方案中不完善的“掩盖”。 您可以使用多个框阴影来接近;每一面一个 编辑 在顶部和底部的顶部再添加2个阴影,以遮盖流血的阴影。

  • 由于我在Drools中使用Scala不可变对象,为了更新事实,我需要创建一个新对象来替换它。我已经为要调用的规则编写了一个Scala方法,它只返回这样一个对象。 我的问题是,在Drools规则的“然后”部分中定义新的Scala case类对象的语法是什么?我尝试过类似于以下我在某处看到的语法,但它似乎也没有起到作用...(即使对于标准类型,如字符串) 目前对Drools Scala的支持和文档似乎

  • 进入具体播放器编辑页面,点击右侧菜单标签,设置播放器右侧控制菜单。 系统内置了三个菜单:设置、分享按钮、下载(需配合加密播放器使用)。若不需要显示,点击菜单后面的停用即可; 此外,您还可以根据自己的需求来自定义设置右侧菜单,向播放用户开放更多设置效果。 自定义右侧菜单支持以下三种按钮类型,你可以根据自己需求选择; ·超级链接:设置一个链接地址,点击按钮时将打开该链接地址; ·弹出内容:点击按钮时,