news 2026/5/7 2:39:29

GBase 8s 中嵌套表return as value与return as locator的区别

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
GBase 8s 中嵌套表return as value与return as locator的区别

在 数据库中,嵌套表(nested table)是一种集合数据类型,可以存储零个或多个元素,这些元素可以是标量类型或对象类型。嵌套表可以通过两种主要方式返回给调用者:RETURN AS VALUE 和 RETURN AS LOCATOR。这两种方式在性能和功能上有一些重要的区别。

默认为return as value,return as value返回值,return as locator返回引用。


RETURN AS VALUE

  • 内存占用:当使用 RETURN AS VALUE 时,嵌套表的数据会随调用返回的结果集一起传输。这意味着整个嵌套表的数据会被复制到调用者的内存空间中。
  • 性能:由于数据需要在客户端和服务器之间传输,对于大型嵌套表,这种方式可能会消耗较多内存和带宽,影响性能。
  • 用法:这种方式适用于嵌套表数据相对较小的情况,或者当嵌套表数据需要在客户端进行大量处理时。
  • 访问方式:调用者可以直接访问和操作返回的嵌套表数据,无需额外的数据库访问。

RETURN AS LOCATOR

  • 内存占用:RETURN AS LOCATOR 返回的是一个指向嵌套表数据的引用(locator),而不是实际数据本身。这意味着只有引用信息会被传输,而不是整个嵌套表的数据。
  • 性能:由于只传输引用信息,这种方式通常比 RETURN AS VALUE 更节省内存和带宽。然而,当需要访问嵌套表数据时,数据库访问仍然需要发生,这可能引入额外的延迟。
  • 用法:这种方式适用于嵌套表数据较大,或者当只需要访问嵌套表的一小部分数据时。通过引用,可以按需从数据库中检索数据。
  • 访问方式:调用者需要通过引用(locator)来访问嵌套表数据,这通常涉及额外的数据库操作,如使用 DBMS_LOB 包或特定的数据库函数来检索数据。


总结

  • RETURN AS VALUE:适用于小型嵌套表或需要在客户端进行大量处理的情况。数据随结果集一起返回,便于直接访问,但可能消耗较多内存和带宽。
  • RETURN AS LOCATOR:适用于大型嵌套表或只需要访问部分数据的情况。返回的是数据引用,节省内存和带宽,但访问数据时需要额外的数据库操作。


完整示例:

create database testdb with log; set environment sqlmode 'oracle'; create type typ1 is table of int;/ create table tmp_1(c1 typ1) nested table c1 store as ntmp_1; create table tmp_2(c1 typ1) nested table c1 store as ntmp_2 return as locator; info tables; insert into tmp_1 values(typ1(1,3,5,7)); insert into tmp_2 values(typ1(1,3,5,7)); select * from tmp_1; --查询c1字段显示typ1(1,3,5,7) select * from tmp_2;--查询c1字段显示(REFCURSOR) select * from ntmp_1; select * from ntmp_2; drop table ntmp_1;--报错313 drop table tmp_1;--将tmp_1与ntmp_1全部删掉 info tables; drop table ntmp_2;--报错313 info tables; drop table tmp_2; create table tmp_3(c1 typ1) nested table c1 store as ntmp_3 return as value; --同tmp_1 info tables; insert into tmp_3 values(typ1(1,3,5,7)); select * from tmp_3; select * from ntmp_3; drop table tmp_3; info tables; drop type typ1;


执行结果图:

本文的介绍了 GBase 8s 中嵌套表 RETURN AS VALUE 和 RETURN AS LOCATOR 两种返回方式的区别。 RETURN AS VALUE 适用于小型嵌套表或需要在客户端进行大量处理的场景,而 RETURN AS LOCATOR 适用于大型嵌套表或只需要访问部分数据的场景。根据实际需求选择合适的方式,可以优化应用程序的性能和资源使用。如果你在使用过程中遇到任何问题,欢迎随时在社区中提问,我们在这里为你提供支持!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/7 2:32:27

从Figma设计稿自动生成CSS代码:design-extract工具实战指南

1. 项目概述:从设计稿到代码的自动化提取最近在跟一个前端团队合作,他们每天都要面对一个老大难问题:UI设计师用Figma或Sketch交付了精美的设计稿,前端同学就得拿着像素尺,一个个去量间距、颜色、字体大小,…

作者头像 李华
网站建设 2026/5/7 2:28:54

区域知识产权信息管理:创新监管,智慧服务

为赋能区域知识产权管理,助力区域科技创新和经济发展,“普陀区知识产权信息服务平台”上线运行。平台整合“区域实时监控统计”“知识产权信息统计”“园区知识产权代管”“企业排行榜”“专利检索”“商标检索”六大核心功能模块,覆盖政务决…

作者头像 李华
网站建设 2026/5/7 2:28:29

智能体技能开发实战:基于LLM的咖啡制作Agent设计与实现

1. 项目概述:一个关于“智能咖啡师”的探索最近在GitHub上看到一个挺有意思的项目,叫alexpolonsky/agent-skill-jlm-coffee。光看这个名字,就能嗅到一股混合了前沿技术和生活气息的味道。agent和skill这两个词,在当前的AI和自动化…

作者头像 李华
网站建设 2026/5/7 2:22:39

4D Systems RP2350嵌入式显示屏模块解析与应用指南

1. 4D Systems推出基于RP2350的嵌入式显示屏模块作为一名长期从事嵌入式开发的工程师,我对4D Systems最新发布的gen4-RP2350系列显示屏模块产生了浓厚兴趣。这个系列最吸引我的地方在于它完美结合了Raspberry Pi生态系统的易用性和工业级显示屏的专业性能。这个系列…

作者头像 李华