news 2026/9/3 5:11:43

GBase8s集合类型之关联数组简介

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
GBase8s集合类型之关联数组简介

GBase 8s兼容oracle的PL/SQL编程语言,PL/SQL 语法需要显式设置环境变量SQLMODE为’ORACLE’后才能生效,默认情况下8s的SQLMODE为’GBASE’,此时不支持 PL/SQL 语法。本文将介绍GBase 8s兼容oracle模式中的关联数组类型,包括它们的使用场景、特点以及如何有效利用它们来提高数据库操作的效率。


兼容oracle的集合类型包括三种,分别是关联数组类型、变长数组类型、嵌套表类型,本文主要讲述关联数组类型及其变量的使用。关联数组的元素数量未指定,索引类型可以为字符串或者PLS_INTEGER,可以在PLSQL块中或者包中进行定义。


关联数组是一组键值对,每个键都是一个唯一的索引,用于定位与语法variable_name(index)相关联的值。


1.语法

type population is table of int index by varchar(10);

2.特点

  • 索引的数据类型可以是字符串类型(VARCHAR2、VARCHAR、string或LONG)或PLS_INTEGER。
  • 索引是按排序顺序存储的,而不是按创建顺序存储的。对于字符串类型,排序顺序由初始化参数NLS_sort和NLS_COMP决定。
  • 不需要初始化。


3.与数据库表的不同点:

  • 关联数组不需要磁盘空间或网络操作
  • 关联数组无法使用dml语言进行操作


4.关联数组的比较

  • 不能与NULL进行比较
  • 不支持变量直接比较:v1=v2
  • 只支持变量元素比较:v1(1)=v2(1)


5.示例

DECLARE TYPE type_1 IS TABLE OF NUMBER INDEX BY VARCHAR2(64); v1 type_1; i VARCHAR2(64); BEGIN v1('Smallville') := 2000; v1('Midland') := 750000; v1('Megalopolis') := 1000000; v1('Smallville') := 2001; i := v1.first; while i is not null loop dbms_output.put_line('values of ' || i || ' is ' || v1(i)); i := v1.next(i); end loop; end; /

运行结果:
Population of Megalopolis is 1000000
Population of Midland is 750000
Population of Smallville is 2001

--关联数组类型和嵌套表类型作为存储过程的out参数,并应用在package中 drop table if exists tab1; create table tab1(id int,name varchar(10)); create or replace package pkg1 as type t1 is table of tab1.id%type; type t2 is table of tab1.name%type index by varchar(5); procedure p1(c out t1); procedure p2(c out t2); end; / create or replace package body pkg1 as procedure p1 (c out t1) is a tab1%rowtype; -- c t1 := t1(100,200); begin c := t1(100,200); end; procedure p2 (c out t2) is a tab1%rowtype; begin c ('var') := 'Jack'; end; end; / --调用嵌套表作为out参数的procedure declare b pkg1.t1:=pkg1.t1(10,20); begin pkg1.p1(b); dbms_output.put_line(b(1)); end; / 100 --调用关联数组作为out参数的procedure declare c pkg1.t2; begin pkg1.p2(c); dbms_output.put_line(c('var')); end; / Jack

通过本文的介绍GBase 8s 中关联数组的使用方法、特点及其在 PL/SQL 编程中的应用。关联数组提供了一种灵活的方式来存储和操作一组键值对,适用于多种场景。希望这些内容能帮助你在实际开发中更高效地利用关联数组。如果你在使用过程中遇到任何问题,欢迎随时在社区中提问,我们在这里为你提供支持!

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

GBase 8c数据库磁盘故障定位技术分享

南大通用GBase 8c数据库常见的磁盘故障是磁盘空间不足、磁盘出现坏块、磁盘未挂载等。部分磁盘故障会导致文件系统损坏,例如磁盘未挂载,数据库管理自动定期执行磁盘检测时会识别故障并将实例停止,查看数据库状态时对应实例状态异常&#xff1…

作者头像 李华
网站建设 2026/9/2 22:48:20

# 本文总结了 Python 3.5 到 3.14 各版本的主要语言特性和改进。

本文总结了 Python 3.5 到 3.14 各版本的主要语言特性和改进。 Python 3.5 (2015年9月) 主要特性 类型提示 (Type Hints) /* by 01022.hk - online tools website : 01022.hk/zh/regexsucha.html */ def greeting(name: str) -> str:return Hello namePEP 492 - 异步 IO…

作者头像 李华
网站建设 2026/9/2 22:04:58

sql窗口函数

mysql窗口函数:告别繁琐子查询在处理排名统计、分组内对比、累计计算这类需求时,你是不是还在写多层子查询、反复关联表?mysql窗口函数就是为解决这类问题而生的高效工具——它能在不聚合数据的前提下,对指定数据集(窗…

作者头像 李华
网站建设 2026/9/2 4:21:49

打破制造业“数据孤岛”:2026年ERP和MES系统集成如何驱动降本增效?

行业报告显示,超过六成的数据集成项目因技术架构不合理或工具选型失误而推倒重来。系统割裂与数据孤岛仍是核心痛点。2026年,制造业与零售电商在数字化转型中的核心痛点,依然是系统割裂与数据孤岛。行业调研揭示,超过80%的企业在系…

作者头像 李华
网站建设 2026/9/2 23:29:01

【数据分享】上市公司高管风险偏好数据+dofile(2007-2024年)

而今天要限时免费分享的数据就是上市公司高管风险偏好数据dofile(2007-2024年) 数据介绍 数据概况 数据名称:上市公司高管风险偏好数据dofile(2007-2024年) 数据年份:2007-2024 年 数据范围&#xff1a…

作者头像 李华
网站建设 2026/9/2 23:35:01

【数据分享】安徽省路网数据安徽省路网分类数据(2025年)

而今天要说明数据就是安徽省路网数据安徽省路网分类数据(2025年) 数据概况 数据含城市次干道、城市支路、城市主干道、高架及快速路、郊区乡村道路、内部道路、人行道路、自行车道等(具体请看截图,有些省份可能无法分类出自行车道)。 详情…

作者头像 李华