返回首页

gbase数据、南大通用产品文档:GBase8s创建游标变量

更新日期:2024年09月11日

创建游标变量:
l
定义REF CRUSOR类型,然后声明该类型的变量。
l
声明SYS_REFCURSOR的变量,一个游标变量被称为REF CURSOR(引用游标)
一个REF CURSOR类型基本的语句定义:
TYPE type_name IS REF CURSOR [ RETURN return_type ]
如果指定了return_type,则定义的引用游标变量和声明该类型的变量就是强类型,否则
为弱类型。SYS_REFCURSOR类型和他的变量都为弱类型。对于强类型的游标变量,可以把
返回指定类型的查询和他关联。对于弱类型的游标变量,可以与任何查询关联。弱类型的
引用游标可以互相转换,也可以与SYS_REFCURSOR互相转换。可以将一个强类型的游标变
量赋值给一个弱类型的游标变量;只有当2个强类型游标变量具有相同的类型,可以进行
赋值。
在本次版本中 RETURN只是语法实现,所以游标类型实际都是弱游标。
CREATE OR REPLACE PROCEDURE P_6_20 AS
TYPE empcurtyp IS REF CURSOR RETURN employees%ROWTYPE; -- strong type
TYPE genericcurtyp IS REF CURSOR; -- weak type
cursor1 empcurtyp; -- strong cursor variable
cursor2 genericcurtyp; -- weak cursor variable
my_cursor SYS_REFCURSOR; -- weak cursor variable
TYPE deptcurtyp IS REF CURSOR RETURN departments%ROWTYPE; -- strong type
dept_cv deptcurtyp; -- strong cursor variable

GBase 8s PL/SQL手册
南大通用数据技术股份有限公司
- 111 -

BEGIN
NULL;
END;

CREATE OR REPLACE PROCEDURE P_6_21 AS
TYPE EmpRecTyp IS RECORD (
employee_id NUMBER,
last_name VARCHAR2(25),
salary NUMBER(8,2));
TYPE EmpCurTyp IS REF CURSOR RETURN EmpRecTyp;
emp_cv EmpCurTyp;
BEGIN
NULL;
END;

问题现象
通过查询information_schema.cluster_tables 表来获取表的大小信息
(TABLE_DATA_SIZE、
TABLE_STORAGE_SIZE)

但是这张表只能通过库名和表名进
行查询,无法一次性获取所有表的大小信息。
解决方法:
1
通过集群监控的界面查询,目前集群监控支持查看表的大小信息和数据分布;
2
在用户不考虑实时性时,可以考虑通过存储过程的方式定期执行,通过
information_schema 逐个表查询得到统计结果值写入一个临时表中,
之后再从该
临时表查询,包括条件过滤/排序

GBase GCI 是GBase 8s 数据库提供的兼容Oracle OCI 的接口标准,目前已
实现了167 个Oracle OCI 接口的兼容支持。应用可以通过调用GBase GCI 访问
GBase 8s 数据库。