`
jean7155
  • 浏览: 61720 次
  • 性别: Icon_minigender_2
  • 来自: 上海
社区版块
存档分类
最新评论

oracle自定义字段类型

阅读更多
目标:
  • 定义一个类型
  • 编写类型的方法
  • 使用自定义的类型为字段创建表
  • 添加数据的方法
  • 查询数据的方法
  • 其它


定义一个类型
CREATE OR REPLACE TYPE PropertyValue AS OBJECT (
  number_value  number,
  string_value varchar2(2000),
  date_value date,
  
  MEMBER FUNCTION getNumberValue RETURN number,
  MEMBER FUNCTION getStringValue RETURN varchar2,
  MEMBER FUNCTION getDateValue RETURN date
);


编写类型的方法
CREATE OR REPLACE TYPE BODY PropertyValue AS
  MEMBER FUNCTION getNumberValue RETURN number AS
  BEGIN
    RETURN number_value;
  END getNumberValue;
  
  MEMBER FUNCTION getStringValue RETURN varchar2 AS
  BEGIN
    RETURN string_value;
  END getStringValue;
  
  MEMBER FUNCTION getDateValue RETURN date AS
  BEGIN
    RETURN date_value;
  END getDateValue;
END;


使用自定义类型为字段创建表
create table IGRP_SYS_PROPERTIES (
nid				number primary key,
propertyKey		varchar2(2000),
propertyValue	PropertyValue,
propertyType		varchar2(2000),
description		varchar2(2000),
createUserId		number,
modifyUserId		number,
createDate		date,
modifyDate		date);

CREATE SEQUENCE SQ_IGRP_PROPERTYID
  START WITH 1
  INCREMENT BY 1
  MAXVALUE 1E27
  MINVALUE 1
  NOCYCLE
  CACHE 20
  NOORDER;

-- Add comments to the columns
comment on column IGRP_SYS_PROPERTIES.nid
  is 'PK唯一值';
comment on column IGRP_SYS_PROPERTIES.propertyKey
  is '属性键';
comment on column IGRP_SYS_PROPERTIES.propertyValue
  is '属性值';
comment on column IGRP_SYS_PROPERTIES.propertyType
  is '属性类型';
comment on column IGRP_SYS_PROPERTIES.description
  is '描述';
comment on column IGRP_SYS_PROPERTIES.createUserId
  is '创建用户ID';  
comment on column IGRP_SYS_PROPERTIES.modifyUserId
  is '修改用户ID';    
comment on column IGRP_SYS_PROPERTIES.createDate
  is '创建日期';      
comment on column IGRP_SYS_PROPERTIES.modifyDate
  is '修改日期';        


添加数据
insert into IGRP_SYS_PROPERTIES VALUES
(SQ_IGRP_PROPERTYID.nextval, 
'xxx',
PropertyValue(10, null,null),
'number',
'xxx',
101,
101,
sysdate,
sysdate);
commit;


查询数据
select isp.propertyValue.getNumberValue() as myValues
  from 
    IGRP_SYS_PROPERTIES isp 
  where 
    isp.propertyKey = 'xxx' 
    and isp.propertyType = 'number'; 


其它
1. 数据类型使用在数据表后,其BODY是不能改变的。 因此,要先DROP和类型有关的表,才能修改其BODY。
2. EXPORT和IMPORT会有问题。
3. SQL*Plus 的COPY命令不能使用在自定义的数据类型中。
分享到:
评论

相关推荐

    Oracle10g自定义聚合函数(字符串拼接)

    * 可自定义指定排序字段sequence,对于数字或日期类型的字段,先转为字符串,比如to_char(line, 'FM000') * 由于聚合函数只支持一个参数,这里使用对象类型实现传入多个参数 * Oracle11g Release2版本引入了...

    自定义View使用自定义属性

    自定义View使用自定义属性,是仿照极客学院上的案例做的

    在oracle中利用函数实现计算公式解析(支持括号).txt

    在oracle中利用函数实现计算公式解析|在oracle中利用函数实现计算公式解析

    Oracle实用教程_04章_Oracle数据类型和函数[整理].pdf

    Oracle 数据库支持多种不同的数据类型,甚至允许用户自定义类型,但最常用的还是其基本数据类型。 Oracle 数据类型体系可以分为以下几类: 1. 字符型:包括 CHAR、NCHAR、VARCHAR2、NVARCHAR2 等。 CHAR 型数据...

    Oracle中如何用SQL检测字段是否包括中文字符

    首先我想到的是采用检测每个字节ASCII的方式,这样的话需要写一个自定义函数,然后SQL中调用得到结果。但是感觉这个方法估计很耗时,毕竟每个字符都要比较,所以没有去实现。突然想到Oracle有一个编码转换的函数叫...

    oracle数据库自定义split函数和调用具体实现

    Oracle 自定义函数需求有个字段,工号JOB_NUMBER ='10202804/10133066/10131810',数据库里是编号,所有想写个函数,将JOB_NUMBER 传递进去,然后返回 '张三/李四/王五',如果王五不存在则返回昵称拼接code '张三/...

    ORACLE中的数据类型.doc

    虽然ORACLE8i也允许你自定义数据类型,但是它们是最基本的数据类型。在下面的文章中你将了解到他们在oracle 中的用法、限制以及允许值。 l Character 数据类型 Character 数据类型用来存储字母数字型数据。当你...

    hibernate@注解方式配置实体类,调用javadoc接口生成数据库表及字段的注释说明

    hibernate@注解方式配置实体类时,利用javadoc接口生成数据库表及字段的注释说明,支持oracle、sqlserver、db2、mysql数据库。因用到java\lib\tools.jar,需要将该jar放入工程lib下(或者tomcat\lib下、或加入...

    原创ORACLE辅助工具(免客户端支持)

    支持模糊搜索表,视图,存储过程,触发器,语法高亮,EXCEL数据导入,更改字段中文描述。免装ORACLE客户端。需要源码可以和我联系(DELPHI开发)

    Oracle插入随机数

    自定义Oracle函数,向Oracle数据库中插入随机数。

    Oracle自定义脱敏函数的代码详解

    对于信息安全有要求的,在数据下发和同步过程中需要对含有用户身份信息的敏感字段脱敏,包括用户姓名、证件号、地址等等,下面是自定义函数的代码 CREATE OR REPLACE FUNCTION F_GET_SENSITIVE(IN_STR VARCHAR, IN...

    oracle多行转为字符串总结

    介绍了将多行转为字符串的三种方案,并比较了三种方案的执行效率. 1.sys_connect_by_path + start with ... connect by ... prior + 分析函数 2.自定义Function/SP 3.使用 Oracle 10g 内置函数 wmsys.wm_concat

    oracle数组实现

    基于oracle的数组实现,使用自定义类型的方式实现

    Oracle数据库学习指南

    8. ORACLE的数据类型 9. Oracle数据库碎片整理 10.ORACLE性能调整1 11.ORACLE性能调整2 12.Oracle专家调优秘密 13.PL_SQL单行函数和组函数详解 14.PL-SQL 15.PLSQL异常处理初步 16.SQL语句性能调整...

    Oracle中如何用SQL检测字段是否包括中文字符.doc

    首先我想到的是采用检测每个字节ASCII的方式,这样的话需要写一个自定义函数,然后SQL中调用得到结果。但是感觉这个方法估计很耗时,毕竟每个字符都要比较,所以没有去实现。突然想到Oracle有一个编码转换的函数叫...

    EclipseLink通过JPA方式映射Sdo_geometry字段

    通过Oracle提供的jar包,实现jpa方式对sdo_geometry的快速支持。

    hibernate保存图片

    一般网站在处理用户...例子很简单,t_user表主要两个字段,name和photo,其中photo字段类型为Blob.在此例中数据库我采用mysql,oracle的Blob字段比较特殊,你必须自定义类型,具体的请自行搜索,这方面的资料很多.

    oracle设置主键自动增长

    然后,你需要一个自定义的sequence  以上代码完成了一个序列(sequence)的建立过程,名称为emp_sequence,范围是从1开始到无限大(无限大的程度是由你机器决定的),nocycle 是决定不循环,假如你设置了最大值那么你可以用...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    Oracle建议我们自定义自己的角色,使我们更加灵活方便去管理用户  创建角色 SQL> create role admin;  授权给角色 SQL> grant connect,resource to admin;  撤销角色的权限 SQL> revoke connect from admin; ...

    Flink1.14.4自定义flink-connector-jdbc连接SQLServer和SAP数据库

    Flink1.14.4自定义flink-connector-jdbc连接SQLServer和SAP数据库

Global site tag (gtag.js) - Google Analytics