暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 用户定义运算符的函数

askTom 2017-05-04
226

问题描述

就像您从链接中看到的那样,我已经创建了一个用户定义的运算符,将他绑定到函数fn_contains.fn_contains_no。
我的问题是:
如果我没有创作脚本,有任何方法可以从数据库中准确检索运算符绑定到的函数?
谢谢。

专家解答

您可以在 * _ opbindings和 * _ oparguments视图中找到运算符使用的函数:

CREATE OR REPLACE package fn_contains 
AS 
FUNCTION fn_contains_si( 
stringin VARCHAR2, valuein  VARCHAR2) RETURN NUMBER; 
 
FUNCTION fn_contains_no( 
stringin VARCHAR2, valuein  VARCHAR2) RETURN NUMBER; 
 
END fn_contains; 
/

CREATE OR REPLACE package body fn_contains 
AS 
FUNCTION fn_contains_SI( 
stringin VARCHAR2, valuein  VARCHAR2) RETURN NUMBER IS 
 
BEGIN 
  IF INSTR(stringin, valuein, 1, 1) = 0 THEN 
    RETURN 0; 
  END IF; 
 
  RETURN 1; 
END fn_contains_SI; 
FUNCTION fn_contains_NO( 
stringin VARCHAR2, valuein  VARCHAR2) RETURN NUMBER IS 
 
BEGIN 
  IF INSTR(stringin, valuein, 1, 1) = 0 THEN 
    RETURN 1; 
  END IF; 
 
  RETURN 0; 
END fn_contains_NO; 
 
END fn_contains; 
/

CREATE OR REPLACE OPERATOR cns 
BINDING(VARCHAR2, VARCHAR2) RETURN NUMBER USING fn_contains.fn_contains_no ;

select * from user_opbindings;

OWNER  OPERATOR_NAME  BINDING#  FUNCTION_NAME                   RETURN_SCHEMA  RETURN_TYPE  IMPLEMENTATION_TYPE_SCHEMA  IMPLEMENTATION_TYPE  PROPERTY  
CHRIS  CNS            1         "FN_CONTAINS"."FN_CONTAINS_NO"                 NUMBER       CHRIS                                                      

select * from user_oparguments;

OWNER  OPERATOR_NAME  BINDING#  POSITION  ARGUMENT_TYPE  
CHRIS  CNS            1         2         VARCHAR2       
CHRIS  CNS            1         1         VARCHAR2 
复制


http://docs.oracle.com/database/122/REFRN/ALL_OPBINDINGS.htm#REFRN20149
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论