GBase 8s 分布式中的游标是一种只读、仅向前的游标。游标中包含的数据是不能在使用时被更改的,并且游标中的数据只能按照从头至尾的顺序来读取。
GBase 8s 分布式中的游标需要配合处理器(handler)来使用,游标需要在处理器的声明语句之前被声明,而且,任何游标内使用的变量都需要在游标的声明语句之前被定义。
在使用游标处理数据时,通常会使用LOOP、REPEAT或者WHILE结构,并在这些结构的执行体中使用FETCH语句来遍历游标中的数据。
在GBase 8s 分布式中,同一个存储过程中可声明多个游标,但有以下限制:
多个游标不能嵌套,也不能相互交叉,最好是使用完一个再使用另外一个。
在同一个存储过程中只能定义一个处理器,这一个处理器会作用于所有的游标,因此,如果两个游标在流程上并列执行时会变得不甚合理。
如果使用了LOOP、REPEAT或者WHILE结构来遍历游标取得数据并进行处理,同时如果在这些循环结构的结构体中调用了存储过程,则被调用的存储过程中不应该再包含游标和用于遍历游标的LOOP、REPEAT或者WHILE结构,否则可能会出现一些不可预期的结果。
gbase> DELIMITER //
gbase> DROP PROCEDURE IF EXISTS docursor //