目标:
- 定义一个类型
- 编写类型的方法
- 使用自定义的类型为字段创建表
- 添加数据的方法
- 查询数据的方法
- 其它
定义一个类型
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命令不能使用在自定义的数据类型中。
分享到:
相关推荐
* 可自定义指定排序字段sequence,对于数字或日期类型的字段,先转为字符串,比如to_char(line, 'FM000') * 由于聚合函数只支持一个参数,这里使用对象类型实现传入多个参数 * Oracle11g Release2版本引入了...
自定义View使用自定义属性,是仿照极客学院上的案例做的
在oracle中利用函数实现计算公式解析|在oracle中利用函数实现计算公式解析
Oracle 数据库支持多种不同的数据类型,甚至允许用户自定义类型,但最常用的还是其基本数据类型。 Oracle 数据类型体系可以分为以下几类: 1. 字符型:包括 CHAR、NCHAR、VARCHAR2、NVARCHAR2 等。 CHAR 型数据...
首先我想到的是采用检测每个字节ASCII的方式,这样的话需要写一个自定义函数,然后SQL中调用得到结果。但是感觉这个方法估计很耗时,毕竟每个字符都要比较,所以没有去实现。突然想到Oracle有一个编码转换的函数叫...
Oracle 自定义函数需求有个字段,工号JOB_NUMBER ='10202804/10133066/10131810',数据库里是编号,所有想写个函数,将JOB_NUMBER 传递进去,然后返回 '张三/李四/王五',如果王五不存在则返回昵称拼接code '张三/...
虽然ORACLE8i也允许你自定义数据类型,但是它们是最基本的数据类型。在下面的文章中你将了解到他们在oracle 中的用法、限制以及允许值。 l Character 数据类型 Character 数据类型用来存储字母数字型数据。当你...
hibernate@注解方式配置实体类时,利用javadoc接口生成数据库表及字段的注释说明,支持oracle、sqlserver、db2、mysql数据库。因用到java\lib\tools.jar,需要将该jar放入工程lib下(或者tomcat\lib下、或加入...
支持模糊搜索表,视图,存储过程,触发器,语法高亮,EXCEL数据导入,更改字段中文描述。免装ORACLE客户端。需要源码可以和我联系(DELPHI开发)
自定义Oracle函数,向Oracle数据库中插入随机数。
对于信息安全有要求的,在数据下发和同步过程中需要对含有用户身份信息的敏感字段脱敏,包括用户姓名、证件号、地址等等,下面是自定义函数的代码 CREATE OR REPLACE FUNCTION F_GET_SENSITIVE(IN_STR VARCHAR, IN...
介绍了将多行转为字符串的三种方案,并比较了三种方案的执行效率. 1.sys_connect_by_path + start with ... connect by ... prior + 分析函数 2.自定义Function/SP 3.使用 Oracle 10g 内置函数 wmsys.wm_concat
基于oracle的数组实现,使用自定义类型的方式实现
8. ORACLE的数据类型 9. Oracle数据库碎片整理 10.ORACLE性能调整1 11.ORACLE性能调整2 12.Oracle专家调优秘密 13.PL_SQL单行函数和组函数详解 14.PL-SQL 15.PLSQL异常处理初步 16.SQL语句性能调整...
首先我想到的是采用检测每个字节ASCII的方式,这样的话需要写一个自定义函数,然后SQL中调用得到结果。但是感觉这个方法估计很耗时,毕竟每个字符都要比较,所以没有去实现。突然想到Oracle有一个编码转换的函数叫...
通过Oracle提供的jar包,实现jpa方式对sdo_geometry的快速支持。
一般网站在处理用户...例子很简单,t_user表主要两个字段,name和photo,其中photo字段类型为Blob.在此例中数据库我采用mysql,oracle的Blob字段比较特殊,你必须自定义类型,具体的请自行搜索,这方面的资料很多.
然后,你需要一个自定义的sequence 以上代码完成了一个序列(sequence)的建立过程,名称为emp_sequence,范围是从1开始到无限大(无限大的程度是由你机器决定的),nocycle 是决定不循环,假如你设置了最大值那么你可以用...
Oracle建议我们自定义自己的角色,使我们更加灵活方便去管理用户 创建角色 SQL> create role admin; 授权给角色 SQL> grant connect,resource to admin; 撤销角色的权限 SQL> revoke connect from admin; ...
Flink1.14.4自定义flink-connector-jdbc连接SQLServer和SAP数据库