oracle中type怎么用

什么是Oracle Type

在Oracle中,Type是一种用户定义对象,它可以是一种复杂的数据类型,可以包含不同的原始数据类型,也可以包含其他的对象类型。

Type所包含的数据可以是表、视图、过程、函数等。我们可以通过CREATE TYPE命令创建一个Type。

CREATE TYPE employeetype AS OBJECT(

empno NUMBER(5,0),

ename VARCHAR2(20),

job VARCHAR2(20),

salary NUMBER(7,2)

);

上面的代码创建了一个Type叫做employeetype,它包含4个属性。

Oracle Type的分类

根据其创建方式的不同,Oracle中的Type可以分为两类:

1. 基本Type

基本Type是指由Oracle提供的一些基本数据类型,如数字、字符、日期、布尔等。

它们可以直接在SQL或PL/SQL代码中使用,无需进行任何定义。

2. 对象Type

对象Type是由用户自定义的复杂数据类型。它由可以包含多个属性,每个属性可以是基本Type或其他对象Type。

对象Type可以用于表的列、函数的返回值、变量的类型等。

Oracle Type的使用

在应用程序中使用Type,需要将其引入连接池(如java应用程序中的DataSource)或声明在PL/SQL程序中。

下面以PL/SQL为例来演示如何声明和使用Object Type。

CREATE OR REPLACE TYPE employeetype AS OBJECT(

empno NUMBER(5,0),

ename VARCHAR2(20),

job VARCHAR2(20),

salary NUMBER(7,2)

);

1. 使用Type作为变量类型

可以把Type作为变量类型声明。下面的代码中,首先DECLARE一个employee变量,其类型为employeetype,然后在BEGIN块中赋值。

DECLARE

employee employeetype;

BEGIN

employee := employetype(001,'Tom','CEO',50000);

dbms_output.put_line(employee.empno ||'-'|| employee.ename);

END;

上述代码输出结果为:

1-Tom

2. 使用Type作为函数返回值类型

可以把Type作为函数的返回值类型。下面的代码定义了一个函数fn_get_employee,其返回值类型为employeetype

CREATE OR REPLACE function fn_get_employee(pid in number)

return employeetype as

employee employeetype;

begin

select employeetype(empno,ename,job,salary)

into employee

from employee

where employee.empno = pid;

return employee;

end;

上述代码中,select返回的是employeetype类型的数据,并将其赋值给employee变量,最终返回employee变量。

调用fn_get_employee函数,可以获得一个employeetype类型的数据。

DECLARE

employee employeetype;

BEGIN

employee := fn_get_employee(001);

dbms_output.put_line(employee.empno ||'-'|| employee.ename);

END;

上述代码输出结果为:

1-Tom

3. 使用Type作为表的列类型

可以把Type作为表的列类型。下面的代码创建了一个包含了employeetype类型的列的表。

CREATE TABLE employee_tab(

emp employeetype

);

插入数据时,可以直接插入employeetype类型的数据。

INSERT INTO employee_tab(emp)

VALUES (employeetype(001,'Tom','CEO',50000));

查询数据时,可以使用EMP对象类型的属性。

SELECT emp.ename,emp.salary

FROM employee_tab e

WHERE e.emp.empno = 001;

上述代码输出结果为:

Tom 50000

结论

本文介绍了Oracle中Type的基本概念、分类和使用方法,包括了Type作为变量类型、函数返回值类型和表的列类型的例子。

使用Type可以方便地对复杂数据类型进行定义和使用,提高了程序的可读性和维护性。

数据库标签