当前位置: 首页 > news >正文

达梦 8 数组类型使用测试

数组类型的创建

达梦原生并不支持数组类型字段,但是可以使用自定义类型(嵌套表)来实现相似功能。


假设有如下数组字段表结构
CREATE TABLE test_array_types (
id int PRIMARY KEY,
int_array INTEGER[], -- 一维整数数组
text_array TEXT[], -- 一维文本数组
varchar_array VARCHAR(50)[], -- 一维变长字符串数组
multidim_array INTEGER[][] -- 二维整数数组
) ;

那么在达梦中可以创建 4 个自定义数组类型

-- 1. INTEGER[]
CREATE TYPE dm_int_array IS TABLE OF INT;

-- 2. TEXT[]
CREATE TYPE dm_text_array IS TABLE OF TEXT;

-- 3. VARCHAR(50)[]
CREATE TYPE dm_varchar_array IS TABLE OF VARCHAR2(50);

-- 4. NTEGER[][] (二维数组:内层是整数数组,外层是内层数组的集合,集合的每个元素都是一个内层数组)
CREATE TYPE dm_inner_int_array IS TABLE OF INT;
CREATE TYPE dm_multidim_array IS TABLE OF dm_inner_int_array;

使用这四个自定义数组类型创建对应表结构

CREATE TABLE test_array_types (
id INT AUTO_INCREMENT PRIMARY KEY,
int_array dm_int_array, -- 一维整数数组
text_array dm_text_array, -- 一维文本数组
varchar_array dm_varchar_array, -- 一维变长字符串数组
multidim_array dm_multidim_array -- 二维整数数组
);

数组类型的插入

通过下列方式对数组类型字段插入数据

INSERT INTO test_array_types (int_array, text_array, varchar_array, multidim_array)
VALUES (
dm_int_array(1, 2, 3, 4, 5),
dm_text_array('a', 'b', 'c'),
dm_varchar_array('hello', 'world'),
dm_multidim_array(
dm_inner_int_array(1, 2),
dm_inner_int_array(3, 4),
dm_inner_int_array(5, 6)
)
), (
dm_int_array(10, 20, 30, 40),
dm_text_array('test1', 'test2'),
dm_varchar_array('item1', 'item2', 'item3'),
dm_multidim_array(
dm_inner_int_array(1, 2, 3),
dm_inner_int_array(4, 5, 6)
)
);
COMMIT;

查看表中数据

数组类型的查询

对于需要使用下标的查询,可以通过创建自定义函数的方式方便查询

1. 创建获取一维整数数组元素的函数
CREATE OR REPLACE FUNCTION get_int_array_element(
p_array IN dm_int_array,
p_index IN INT
) RETURN INT
AS
v_result INT;
BEGIN
SELECT COLUMN_VALUE INTO v_result
FROM (
SELECT COLUMN_VALUE, ROWNUM AS rn
FROM TABLE(p_array)
)
WHERE rn = p_index;

RETURN v_result;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN NULL;
END;
/

2. 创建获取字符串数据元素函数
CREATE OR REPLACE FUNCTION get_varchar_array_element(
p_array IN dm_varchar_array,
p_index IN INT
) RETURN VARCHAR2
AS
v_result VARCHAR2(50);
BEGIN
SELECT COLUMN_VALUE INTO v_result
FROM (
SELECT COLUMN_VALUE, ROWNUM AS rn
FROM TABLE(p_array)
)
WHERE rn = p_index;

RETURN v_result;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN NULL;
END;
/


3. 创建获取文本数组元素的函数
CREATE OR REPLACE FUNCTION get_text_array_element(
p_array IN dm_text_array,
p_index IN INT
) RETURN TEXT
AS
v_result TEXT;
BEGIN
SELECT COLUMN_VALUE INTO v_result
FROM (
SELECT COLUMN_VALUE, ROWNUM AS rn
FROM TABLE(p_array)
)
WHERE rn = p_index;

RETURN v_result;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN NULL;
END;
/

4. 创建获取二维数组元素的函数
CREATE OR REPLACE FUNCTION get_2d_array_element(
p_array IN dm_multidim_array,
p_row IN INT,
p_col IN INT
) RETURN INT
AS
v_inner_array dm_inner_int_array;
BEGIN
-- 先获取内层数组(第p_row行)
v_inner_array := p_array(p_row);
-- 再获取内层数组中的元素(第p_col列)
RETURN v_inner_array(p_col);
EXCEPTION
WHEN SUBSCRIPT_BEYOND_COUNT OR NO_DATA_FOUND THEN
RETURN NULL;
END;
/

查询结果如下:

http://www.jsqmd.com/news/806096/

相关文章:

  • 酒店餐饮企业公司注册服务优质机构推荐 - 优质品牌商家
  • Windows安卓应用安装神器:APK-Installer终极使用指南
  • 从Demo到生产:构建高可用AI智能体的工程化实践
  • 2026年高评价吨袋自动包装机推荐 附核心参数对比 - 优质品牌商家
  • AgentLint:AI助手配置文件质量检查工具,提升开发效率与安全性
  • MCP Pool:基于Model Context Protocol构建AI助手与SaaS数据桥接方案
  • 私有化部署验签引擎:大型企业数据安全与合规的终极方案
  • 5分钟掌握数据主权:WeChatMsg微信聊天记录导出与永久保存完全指南
  • 2026年5月更新:电缆回收企业选型指南,宁波皓诚再生资源有限公司深度解析 - 2026年企业推荐榜
  • goxam 界面不刷新的问题,需要滚轮或者重新加载才能显示
  • 2026年靠谱代账品牌盘点:公司注册流程/成都公司注册/无地址公司注册/电商代账/从资质到售后的硬核筛选 - 优质品牌商家
  • WindowResizer终极教程:3分钟掌握Windows窗口大小调整神器
  • 为什么92%的前端团队仍在手动运行tsc?Claude实时类型推导已悄然替代——48小时紧急迁移手册
  • 2026年知名的线控EPS带转向器总成/台州转向器主流厂家对比评测 - 品牌宣传支持者
  • Python-pptx进阶玩法:给你的PPT图表加上动态数据,告别静态截图
  • 2026年方管租赁专业选型指南:附近盘扣租赁站及电话、附近钢管租赁站及电话、南京盘扣租赁、南京钢管租赁、扣件租赁选择指南 - 优质品牌商家
  • MS35629 具有静音和堵转检测功能的 36V、1.5A 两相 S/D 步进电机驱动芯片
  • 第二篇:基于 RA-ECO-RA4M2 开发板的四轮小车运动控制评测
  • 【Claude 3.5 Sonnet深度解析】:5大颠覆性新功能实测对比,开发者必须立即掌握的AI生产力跃迁指南
  • 0304光刻机突围全景:第三卷 双工件台+纳米级精密运动控制 国产精度优化方案
  • 怎样快速免费完成QQ音乐格式转换:完整实用手册
  • GitHub Explorer Skill:AI Agent驱动的开源项目深度分析工具实战
  • 2026年5月新消息:钨丝回收价格走势与专业服务商福荣金属回收深度剖析 - 2026年企业推荐榜
  • ARM GIC中断控制器与GICR_WAKER寄存器详解
  • MCP协议实战:用mcp-custom-dev构建AI助手专属工具链
  • 关于C# panel 添加lable问题 -- 明确X和Y 位置错误
  • 卡梅德生物技术快报|细菌 FISH 实验 + 流式细胞术:尿路感染活菌快速定量系统实现与数据验证
  • 2026年4月市面上评价好的酸性清洗剂厂商口碑推荐,酸性清洗剂/氢氧化钠/碱性清洗剂/润滑剂,酸性清洗剂实力厂家有哪些 - 品牌推荐师
  • Python并发编程实战:ThreadPoolExecutor深度解析
  • 3步高效解决Dell G15散热难题:TCC-G15智能温控指南