diff --git "a/content/docs-lite/zh/docs/SQLReference/\346\225\260\347\273\204.md" "b/content/docs-lite/zh/docs/SQLReference/\346\225\260\347\273\204.md" index 6b86a237d7922afc6ef4b7bb25c7b4f146e05d1b..c7bb66c6bedb84cbef303bb7c923acd5fd3f1c0b 100644 --- "a/content/docs-lite/zh/docs/SQLReference/\346\225\260\347\273\204.md" +++ "b/content/docs-lite/zh/docs/SQLReference/\346\225\260\347\273\204.md" @@ -1,6 +1,6 @@ # 数组 -## 数组类型的使用 +## 特性说明 在使用数组之前,需要自定义一个数组类型。 @@ -32,3 +32,46 @@ openGauss支持使用圆括号来访问数组元素,且还支持一些特有 >存储过程中如果有DML语句(SELECT、UPDATE、INSERT、DELETE),DML语句推荐使用中括号来访问数组元素,使用小括号默认识别为数组访问,若数组不存在,则识别为函数表达式。 >存储过程中的table of类型、record类型、clob作为出入参、游标、raise info等对大于1GB的clob类型不支持。 +## 示例 + +```sql +-- 建表 +create table tbl (col integer); + +-- 该存储过程会向表中插入 1 到 10 的十条记录 +create or replace procedure insert_arr +as + -- 定义数组类型 + type int_arr is varray(10) of integer; + p_arr int_arr := int_arr(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); +begin + for i in 1..p_arr.count loop + insert into tbl values (p_arr(i)); + end loop; +end; +/ + +-- 调用存储过程 +call insert_arr(); + +-- 查表 +select * from tbl; +``` + +查表输出结果: + +```txt + col +----- + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 +(10 rows) +``` diff --git "a/content/zh/docs/SQLReference/\346\225\260\347\273\204.md" "b/content/zh/docs/SQLReference/\346\225\260\347\273\204.md" index 8db3a7b47750d8ee5900c3a8435d029cfc0c14b8..bc4c457a00237d216647567e8585031676c82f89 100644 --- "a/content/zh/docs/SQLReference/\346\225\260\347\273\204.md" +++ "b/content/zh/docs/SQLReference/\346\225\260\347\273\204.md" @@ -1,6 +1,6 @@ # 数组 -## 数组类型的使用 +## 特性说明 在使用数组之前,需要自定义一个数组类型。 @@ -31,3 +31,46 @@ openGauss支持使用圆括号来访问数组元素,且还支持一些特有 > >存储过程中的table of类型、record类型、clob作为出入参、游标、raise info等对大于1GB的clob类型不支持。 +## 示例 + +```sql +-- 建表 +create table tbl (col integer); + +-- 该存储过程会向表中插入 1 到 10 的十条记录 +create or replace procedure insert_arr +as + -- 定义数组类型 + type int_arr is varray(10) of integer; + p_arr int_arr := int_arr(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); +begin + for i in 1..p_arr.count loop + insert into tbl values (p_arr(i)); + end loop; +end; +/ + +-- 调用存储过程 +call insert_arr(); + +-- 查表 +select * from tbl; +``` + +查表输出结果: + +```txt + col +----- + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 +(10 rows) +```