Oracle数据库自定义类型type的用法详解
作者:梁萌
Oracle 基本概念
1. Oracle 数据库
Oracle 数据库是数据的物理存储。这就包括(数据文件 ORA 或者 DBF、控制文件、联机日志、参数文件)。其实 Oracle 数据库的概念和其它数据库不一样,这里的数据库是一个操作系统只有一个库。可以看作是 Oracle 就只有一个大数据库
2. 实例
一个Oracle实例(Oracle Instance)有一系列的后台进程(Backguound Processes)和内存结构(Memory Structures)组成。一个数据库可以有 n 个实例。
3. 数据文件(dbf)
数据文件是数据库的物理存储单位。数据库的数据是存储在表空间中的,真正是在某一个或者多个数据文件中。而一个表空间可以由一个或多个数据文件组成,一个数据文件只能属于一个表空间。一旦数据文件被加入到某个表空间后,就不能删除这个文件,如果要删除某个数据文件,只能删除其所属于的表空间才行。
4. 表空间
表空间是 Oracle 对物理数据库上相关数据文件(ORA 或者 DBF 文件)的逻辑映射。一个数据库在逻辑上被划分成一到若干个表空间,每个表空间包含了在逻辑上相关联的一组结构。每个数据库至少有一个表空间(称之为 system 表空间)。
每个表空间由同一磁盘上的一个或多个文件组成,这些文件叫数据文件(datafile)。一个数据文件只能属于一个表空间。
emp表数据如下所示
定义object类型
create or replace type typeof_userinfo_row as object( user_id varchar2(50), user_name varchar2(50) )
创建函数并将此类型作为返回值类型
create or replace function FUN_TEST return typeof_userinfo_row is FunctionResult typeof_userinfo_row; begin FunctionResult:=typeof_userinfo_row(null,null); --将单条数据值插入到自定义类型的变量中 SELECT e.empno,e.ename INTO FunctionResult.user_id,FunctionResult.user_name FROM emp e where e.empno = '7499'; RETURN(FunctionResult); end FUN_TEST;
调用该函数,并打印执行结果
declare res typeof_userinfo_row; begin res := FUN_TEST(); dbms_output.put_line(res.user_id || ' ' || res.user_name); end;
执行结果
定义table类型
create or replace type typeof_userinfo_table is table of typeof_userinfo_row
创建函数并将此类型作为返回值类型
create or replace function FUN_TEST1 return typeof_userinfo_table is FunctionResult typeof_userinfo_table; begin --将多条记录的值同时插入到自定义类型的变量中 SELECT typeof_userinfo_row(empno,ename) BULK COLLECT INTO FunctionResult FROM emp e; RETURN(FunctionResult); end FUN_TEST1;
调用该函数,并打印执行结果
declare res typeof_userinfo_table; i NUMBER := 1; begin res := FUN_TEST1(); WHILE i <= res.LAST LOOP DBMS_OUTPUT.PUT_LINE(res(i).user_id || ' ' ||res(i).user_name); i := i + 1; END LOOP; end;
执行结果
到此这篇关于Oracle数据库自定义类型type的用法详解的文章就介绍到这了,更多相关Oracle的type内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!