返回首页

gbase数据、南大通用产品文档:GBase8s使用%ROWTYPE属性

更新日期:2024年09月11日

%ROWTYPE属性允许您声明表示表中某行的记录。对于引用的表或视图中的每一
列,记录都有一个字段相同的名称和数据类型。
要引用记录中的字段,请使用record_名称.字段名。记录字段不继承约束或默认值对
应的列。如果引用的项表或视图更改,则声明将自动更新
语法
variable_name table_name%TYPE;
例如:
DECLARE
emp_rec emp%ROWTYPE;
CURSOR c1 IS
SELECT deptno, dname, loc FROM dept;
dept_rec c1%ROWTYPE;
BEGIN
NULL
END;

导出结果集内容...................................... 365

功能描述
DECLARE 命令既可以定义一个游标,用于在一个大的查询里面检索少数几行数据,也
可以作为一个匿名块的开始。
本节主要描述定义为游标的用法,开启匿名块的用法见BEGIN。
为了处理SQL 语句,存储过程进程分配一段内存区域来保存上下文联系。游标是指向
上下文区域的句柄或指针。借助游标,存储过程可以控制上下文区域的变化。
通常游标和SELECT 一样返回文本格式。因为数据在系统内部是用二进制格式存储的,
系统必须对数据做一定转换以生成文本格式。
一旦数据是以文本形式返回,
客户端应用需要
把它们转换成二进制进行操作。使用FETCH 语句,游标可以返回文本或二进制格式。
注意事项

游标命令只能在事务块里使用。

应该小心使用二进制游标。
文本格式一般都比对应的二进制格式占用的存储空间大。

进制游标返回内部二进制形态的数据,可能更易于操作。如果想以文本方式显示数据,
则以文本方式检索会为用户节约很多客户端的工作。
比如,
如果查询从某个整数列返回
1,在缺省的游标里将获得一个字符串1,但在二进制游标里将得到一个4 字节的包含
该数值内部形式的数值(大端顺序)

语法格式
定义游标
DECLARE cursor_name [ BINARY ] [[NO] SCROLL ] CURSOR [ { WITH | WITHOUT } HOLD ]
FOR query ;
开启匿名块
[DECLARE [declare_statements]]
BEGIN
execution_statements
END;
/

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
1097
参数说明

cursor_name
将要创建的游标名。
取值范围:遵循数据库对象命名规范。

BINARY
指明游标以二进制而不是文本格式返回数据。

NO SCROLL
声明游标检索数据行的方式。
SCROLL:若指定,那么游标可以反向滚动。
NO SCROLL:声明该游标不能用于以倒序的方式检索数据行。
未声明:
根据执行计划的不同,
自动判断该游标是否可以用于以倒序的方式检索数据行。

WITH HOLD | WITHOUT HOLD
声明当创建游标的事务结束后,游标是否能继续使用。

WITH HOLD:声明该游标在创建它的事务结束后仍可继续使用。

WITHOUT HOLD:声明该游标在创建它的事务之外不能再继续使用,此游标将在
事务结束时被自动关闭。
如果不指定WITH HOLD 或WITHOUT HOLD,默认行为是WITHOUT HOLD。

query
使用SELECT 或VALUES 子句指定游标返回的行。
取值范围:SELECT 或VALUES 子句。

declare_statements
声明变量,包括变量名和变量类型,如“sales_cnt int”。

execution_statements

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
1098
匿名块中要执行的语句。
取值范围:已存在的函数名称。
示例
参考FETCH 的示例。
相关命令
BEGIN,FETCH