`
jean7155
  • 浏览: 62754 次
  • 性别: 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命令不能使用在自定义的数据类型中。
分享到:
评论

相关推荐

    oracle字段类型转换的处理

    在Oracle数据库中,字段类型转换是一项常见的...总的来说,Oracle字段类型转换是数据库管理中的常见任务,通过SQL语句或自定义脚本可以方便地完成。了解并熟练掌握这些转换方法,能帮助你在处理数据时更加灵活高效。

    Oracle自定义加密解密函数:数据安全合规·数据脱敏·加密存储高效解决方案

    2、数据脱敏:通过加密处理,针对敏感字段进行智能化脱敏处理,既保护了数据隐私,又不影响数据分析与挖掘的准确性。 3、兼容性与灵活性: 适用于各种 Oracle 数据库环境,无论是本地部署还是云数据库,均可无缝集成...

    Oracle中用GROUPING SETS分组自定义汇总

    举个例子,假设我们有一个销售数据表`sales`,包含`prod_id`(产品ID),`cust_id`(客户ID)和`channel_id`(销售渠道ID)等字段,以及`quantity_sold`(销售数量)字段。如果我们想要分别计算每种产品的总销量,每个客户和...

    oracle自定义异常

    ### Oracle自定义异常知识点 #### 一、Oracle异常处理机制简介 在Oracle PL/SQL编程中,异常处理是一项非常重要的功能。它可以帮助开发者捕获并处理程序运行时可能发生的错误情况,确保应用程序能够稳定可靠地运行...

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

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

    oracle某个字段多行记录转化为一行

    为了实现将Oracle数据库中某个字段的多行记录合并成一行记录的目标,可以采用编写自定义函数的方法。下面详细介绍该方法的具体步骤: #### 创建函数 `f_m_t` 首先,创建一个名为`f_m_t`的函数,该函数接受一个参数...

    oracle自定义监视器

    ### Oracle自定义监视器:深度解析与应用指南 在Oracle数据库管理中,性能监控是确保系统稳定运行的关键环节。Oracle提供了内置的性能监控工具,但为了满足特定的业务需求或深入分析系统的某些方面,可能需要自定义...

    Oracle函数:根据自定义分隔符拆分字段SPLIT-STR()然后查询检索数据库表数据

    7、高效字段拆分:此函数能够迅速将字段中的多个值按逗号或其他自定义分隔符拆分成独立的行,极大地简化了对复合字段的操作过程。 使用场景: 商品分类管理:当您的商品分类信息存储在一个字段中时,此函数可以帮助...

    hibernate映射Oracle中LONG类型

    使用自定义类型映射 Oracle 中的 LONG 类型字段是解决 Hibernate 框架中 LONG 类型字段读写问题的一种有效方法。通过实现 UserType 接口,我们可以定制 LONG 类型字段的读写操作,并提高 Hibernate 框架的灵活性和可...

    自定义View使用自定义属性

    `format`属性指定了属性的类型,如颜色(color)或尺寸(dimension)。 接下来,我们需要在自定义View类中获取这些属性的值。在自定义View的构造函数或者`on.AttributeSet()`方法中,可以使用`...

    C# 传入自定义列表List 到Oracle存储过程

    在C#中,我们需要创建一个表示Oracle自定义类型的类,然后提供一个方法将List转换为OracleDbType对应的数组。 ```csharp public class MyType { public int Id { get; set; } public string Name { get; set;...

    Oracle bolb转换Base64 CLOB.txt

    Oracle slq bolb转换Base64 CLOB

    深入浅析mybatis oracle BLOB类型字段保存与读取

    在Oracle数据库中,BLOB(Binary Large Object)和CLOB(Character Large Object)是两种用于存储大量数据的特殊字段类型。本篇文章将深入剖析如何使用MyBatis框架在Oracle数据库中对BLOB类型字段进行保存和读取。 ...

    Ibatis调用Oracle存储过程返回自定义类型

    #### Oracle自定义类型简介 Oracle支持用户自定义数据类型,这为复杂数据结构的应用提供了极大的便利。自定义类型可以是对象类型(OBJECT)或表类型(TABLE OF)。下面通过示例详细介绍如何创建和使用自定义类型: ...

    ORACLE数据库字段生成扫描件

    4. **自定义配置**:作为一款工具,很可能允许用户通过配置文件或命令行参数指定要扫描的数据库连接信息、表名、字段名等。 5. **源码开放**:源代码的开放性使得用户可以根据自身需求进行定制化修改,增加了工具的...

    JPublisher生成Oracle对象类型对应的Java对象例子

    在Oracle数据库中,PL/SQL和JAVA是两种常见的编程语言,它们可以协同工作,实现复杂的业务逻辑。在处理Oracle中的自定义对象类型...在实际开发中,尤其是处理大量Oracle自定义类型时,JPublisher是一个非常实用的工具。

    Oracle字段转字符串/多行记录合并/连接/聚合字符串的几种方法

    在Oracle数据库中,有时我们需要将多个字段值转换为单个字符串,或者将多行记录合并成一行,这在数据处理和报告生成时尤其常见。Oracle提供了多种方法来实现这一目标,包括使用内置函数、PL/SQL过程以及一些高级特性...

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

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

    ORACLE数据库中主要字段类型的读写例子(包括:Long、Raw、Blob).docx

    以下是关于这些字段类型及其使用方法的详细说明: 1. VARCHAR2(20):这是Oracle中的可变长度字符串类型,用于存储最多20个字符的文本数据。在INSERT语句中,你可以直接将字符串值传递给对应的参数,例如`Ocom....

Global site tag (gtag.js) - Google Analytics