Oracle使用对象类型3(MEMBER方法的对象类型)

MERMER方法用于访问对象实例的数据,如果在对象类型中需要访问特定对象实例的数据,则必须要定义MEMBER方法。

MEMBER方法只能由对象实例调用,不能由对象类型调用。

下面以建立和使用对象类型person_typ2为例:

包含name,gender,birthdate和address等四个属性,以及一个MEMBER过程change_address和一个MEMBER函数get_info。

CREATE OR REPLACE TYPE person_typ2 AS OBJECT(

name VARCHAR2(10),gender VARCHAR2(2),birthdate DATE,address VARCHAR2(100),

MEMBER PROCEDURE change_address(new_addr VARCHAR2),

MEMBER FUNCTION get_info RETURN VARCHAR2

);

/

然后要建立对象类型体person_typ2

CREATE OR REPLACE TYPE BODY person_typ2 IS

MEMBER PROCEDURE change_address(new_addr VARCHAR2)

IS

BEGIN

address:=new_addr;

END;

MEMBER FUNCTION get_info RETURN VARCHAR2

IS

v_info VARCHAR2(100);

BEGIN

v_info:='姓名'||name||'出生日期'||birthdate;

RETURN v_info;

END;

END;

/

在完成了对象类型person_typ2的创建工作之后,就可以使用该对象类型了。基于person_typ2建立对象表employee_tab2,并插入数据:

CREATE TABLE employee_tab2(

eno NUMBER(6),person person_typ2,sal NUMBER(6,2),job VARCHAR2(10)

);

INSERT INTO employee_tab2(eno,sal,job,person)

VALUES(1,2000,'高级焊工',person_typ2('王明','男','11-1月-75','呼和浩特');

INSERT INTO employee_tab2(eno,sal,job,person)

VALUES(2,1500,'质量检查员',person_typ2('玛丽','女','11-5月-75','呼和浩特'));

在执行了以上语句之后,就会建立对象表employee_tab2,并插入两条数据。因为在定义对象类型person_tab2时定义了对象方法,所以可以在PL/SQL块中使用其对象方法。

下面以调用对象方法change_address改变人员地址:

DECLARE

v_person person_typ2;

BEGIN

SELECT person INTO v_person FROM employee_tab2

WHERE eno=&&no;

v_person.change_address('呼和浩特呵呵呵呵号');

UPDATE employee_tab2 SET person=v_person WHERE eno=&no;

dbms_output.put_line(v_person.get_info);

END;

/

输入no的值:1

.....

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java架构沉思录

聊聊Mysql优化之索引优化

索引是存储引擎用于快速找到记录的一种数据结构。尤其是当表的数据量越来越大的时候,正确的索引对查询性能的提升尤为明显。但在日常工作中,索引却常常被忽略,甚至被误解...

34912
来自专栏DT乱“码”

Oracle存储过程基本语法介绍

Oracle存储过程基本语法 存储过程    1 CREATE OR REPLACE PROCEDURE 存储过程名    2 IS    3 BEGIN...

3145
来自专栏我的小碗汤

mysql支持原生json使用说明

MySQL在5.7.8开始对json原生支持,本文将对MySQL中json类型的用法简单说明,希望对你有用。

6466
来自专栏Hongten

java开发_mysql中获取数据库表描述_源码下载

我们需要获取表:test_table表的描述信息,然后把描述信息插入到表:data_element_config中记录结果

1852
来自专栏运维技术迷

MySQL数据库(八):表记录的基本操作(增删改查)

一、增 insert:增加(条件一条新纪录,默认新添加的记录都添加在已有记录的末尾) 1.格式: 1.1添加新纪录时,只给记录中的某几个字段赋值 inser...

56911
来自专栏lgp20151222

MySQL使用判断

在第一个方案的返回结果中, value=compare-value。而第二个方案的返回结果是第一种情况的真实结果。如果没有匹配的结果值,则返回结果为ELSE后的...

1122
来自专栏Jackson0714

基础很重要~~04.表表达式-上篇

33512
来自专栏c#开发者

Oracle 最常用功能函数经典汇总

Oracle 最常用功能函数经典汇总 SQL中的单记录函数 1.ASCII 返回与指定的字符对应的十进制数; SQL> select ascii(...

4137
来自专栏Jackson0714

详解SQL集合运算

3648
来自专栏PHP在线

Mysql索引和优化

1、选择索引的数据类型 MySQL支持很多数据类型,选择合适的数据类型存储数据对性能有很大的影响。通常来说,可以遵循以下一些指导原则: (1)越小的数据类型通常...

2996

扫码关注云+社区