#openGauss #入门 #安装 #数据库 #开源
知识来源:docs-opengauss.osinfra.cn/zh/
示例2:带索引的集合类型。
--演示在存储过程中对带索引集合进行操作。
openGauss=# CREATE OR REPLACE PROCEDURE index_table_proc AS
DECLARE
TYPE TABLE_INTEGER IS TABLE OF INTEGER INDEX BY INTEGER; --定义集合类型
TYPE TABLE_VARCHAR IS TABLE OF INTEGER INDEX BY VARCHAR; --定义集合类型
TABLEINT_01 TABLE_INTEGER; --声明集合类型变量,未初始化
TABLEINT_02 TABLE_INTEGER := TABLE_INTEGER(); --声明集合类型变量,初始化为空
TABLEINT_03 TABLE_INTEGER := TABLE_INTEGER(); --声明集合类型变量,初始化为空
RES INTEGER;
BEGIN
TABLEINT_03(2) := 3; --初始化指定值
TABLEINT_03(3) := 4; --初始化指定值
FOR I IN 1..10 LOOP
TABLEINT_01(I) := I; --成员赋值
TABLEINT_02(I) := I + 1; --成员赋值
END LOOP;
TABLEINT_01 := TABLEINT_02; --整体赋值
RES := TABLEINT_03(2); --取值
RAISE NOTICE '%', RES;
RAISE NOTICE '%', TABLEINT_01(1);
RAISE NOTICE '%', TABLEINT_01(10);
END;
/
--调用该存储过程。
openGauss=# CALL index_table_proc();
--删除存储过程。
openGauss=# DROP PROCEDURE index_table_proc;
--演示在存储过程中对嵌套集合进行操作。
openGauss=# CREATE OR REPLACE PROCEDURE nest_table_proc AS
DECLARE
TYPE TABLE_INTEGER IS TABLE OF INTEGER INDEX BY INTEGER; --定义集合类型
TYPE NEST_TABLE_INTEGER IS TABLE OF TABLE_INTEGER INDEX BY INTEGER;--定义集合类型
NEST_TABLE_VAR NEST_TABLE_INTEGER; --声明嵌套集合类型的变量
BEGIN
FOR I IN 1..10 LOOP
NEST_TABLE_VAR(I)(I) := I;
END LOOP;
RAISE NOTICE '%', NEST_TABLE_VAR.COUNT;
RAISE NOTICE '%', NEST_TABLE_VAR(1)(1);
RAISE NOTICE '%', NEST_TABLE_VAR(10)(10);
END;
/
--调用该存储过程。
openGauss=# CALL nest_table_proc();
--删除存储过程。
openGauss=# DROP PROCEDURE nest_table_proc;
#openGauss #入门 #安装 #数据库 #开源