什么是高级?这就叫高级—openGauss(117)

15 阅读1分钟

#openGauss #入门 #安装 #数据库 #开源

知识来源:docs-opengauss.osinfra.cn/zh/

示例

示例1:无索引的集合类型。

--演示在存储过程中对集合进行操作。
openGauss=# CREATE OR REPLACE PROCEDURE table_proc AS
DECLARE
       TYPE TABLE_INTEGER IS TABLE OF INTEGER;--定义集合类型
       TABLEINT TABLE_INTEGER := TABLE_INTEGER();  --声明集合类型的变量 
BEGIN 
       TABLEINT.extend(10);  
       FOR I IN 1..10 LOOP  
           TABLEINT(I) := I; 
       END LOOP; 
       RAISE NOTICE '%', TABLEINT.COUNT;  
       RAISE NOTICE '%', TABLEINT(1);  
       RAISE NOTICE '%', TABLEINT(10); 
END;  
/

--调用该存储过程。
openGauss=# CALL table_proc();

--删除存储过程。
openGauss=# DROP PROCEDURE table_proc;

--演示在存储过程中对嵌套集合进行操作。
openGauss=# CREATE OR REPLACE PROCEDURE nest_table_proc AS
DECLARE
       TYPE TABLE_INTEGER IS TABLE OF INTEGER;--定义集合类型
       TYPE NEST_TABLE_INTEGER IS TABLE OF TABLE_INTEGER;--定义集合类型
       NEST_TABLE_VAR NEST_TABLE_INTEGER := NEST_TABLE_INTEGER(); --声明嵌套集合类型的变量
BEGIN 
       NEST_TABLE_VAR.extend(10);
       FOR I IN 1..10 LOOP  
           NEST_TABLE_VAR(I) := TABLE_INTEGER();
           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 #入门 #安装 #数据库 #开源

知识来源:docs-opengauss.osinfra.cn/zh/