Oracle数据库自定义类型type的用法详解

 更新时间:2023年07月18日 10:19:18   作者:梁萌  
这篇文章主要介绍了Oracle数据库自定义类型type的用法详解,Oracle 数据库的概念和其它数据库不一样,这里的数据库是一个操作系统只有一个库,可以看作是 Oracle 就只有一个大数据库,需要的朋友可以参考下

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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Oracle数据库中的LISTAGG函数使用示例及注意事项

    Oracle数据库中的LISTAGG函数使用示例及注意事项

    这篇文章主要给大家介绍了关于Oracle数据库中LISTAGG函数使用示例及注意事项的相关资料,listagg函数是Oracle 11.2推出的新特性,其主要功能类似于wmsys.wm_concat函数,即将数据分组后把指定列的数据再通过指定符号合并,需要的朋友可以参考下
    2024-08-08
  • ORACLE 分区表的设计

    ORACLE 分区表的设计

    分区致力于解决支持极大表和索引的关键问题。它采用他们分解成较小和易于管理的称为分区的片(piece)的方法。
    2009-08-08
  • Kettle连接Oracle数据库方法((Oracle19c&Oracle11g))

    Kettle连接Oracle数据库方法((Oracle19c&Oracle11g))

    这篇文章主要介绍了Kettle连接Oracle数据库方法((Oracle19c&Oracle11g)),包括oracle驱动jar包,连接oracle的过程,思路很简单需要的朋友可以参考下
    2022-11-11
  • Oracle 子程序参数模式,IN,OUT,NOCOPY

    Oracle 子程序参数模式,IN,OUT,NOCOPY

    Oracle 子程序参数模式主要有IN,OUT,NOCOPY,IN和OUT可以组合,OUT和NOCOPY也可以组合使用.
    2009-10-10
  • Oracle 数据库优化实战心得总结

    Oracle 数据库优化实战心得总结

    优化sql语句、优化io、表设计优化、充分利用系统cpu资源、优化数据库连接、充分利用数据的后台处理方案减少网络流量,实施系统资源管理分配计划等等,感兴趣的朋友可以参考下哈
    2013-06-06
  • oracle 查询当天数据的sql条件写法

    oracle 查询当天数据的sql条件写法

    这篇文章主要介绍了oracle 查询当天数据的sql条件写法,需要的朋友可以参考下
    2017-04-04
  • inner join和left join之间的区别详解

    inner join和left join之间的区别详解

    这篇文章主要给大家介绍了关于inner join和left join之间区别的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • Oracle数据库表名支持的最大长度是多少

    Oracle数据库表名支持的最大长度是多少

    这篇文章主要介绍了Oracle数据库表名支持的最大长度,本文通过Oracle标识符确认了表名的最大支持字符串为30个字符,需要的朋友可以参考下
    2014-08-08
  • win7安装oracle10g 提示程序异常终止 发生未知错误

    win7安装oracle10g 提示程序异常终止 发生未知错误

    本文将详细介绍oracle 10g 在win7下安装提示程序异常终止,发生未知错误的解决方法,需要的朋友可以参考下
    2012-12-12
  • oracle SQL解析步骤小结

    oracle SQL解析步骤小结

    oracle SQL 解析 步骤,爱好oracle的朋友可以参考下,了解工作流程。
    2009-09-09

最新评论