VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

使用游标创建type

功能描述

该功能用于在包package或者匿名块、存储过程、函数中使用record类型创建一个游标的type类型。

注意事项

  • 创建的type为弱游标类型。
  • 该type类型如果作为out参数返回是游标类型。
  • 该功能仅在数据库兼容模式为Oracle时支持(即数据库实例初始化时指定DBCOMPATIBILITY='A')。

语法格式

TYPE type_name IS REF CURSOR RETURN record_name ;

参数说明

  • type_name

    定义的类型的名称。

  • record_name

    使用数据类型说明符 RECORD 定义的用户定义类型的名称。

兼容性

Vastbase G100 V2.2版本与Oracle相比,暂不支持如下语法:

TYPE type_name IS REF CURSOR
  [ RETURN
    { {db_table_or_view | cursor | cursor_variable}%ROWTYPE
    | record%TYPE
    | ref_cursor_type
    }
  ] ;

示例

示例1: 使用record类型创建一个游标的type类型。

1、创建测试表t。

create table t(id int, name varchar2(30));

2、声明游标类型。

declare
type RECORD_ACCOUNT_LIST is record(id int,name varchar2(30));
type CUR_ACCOUNT_LIST is ref cursor return RECORD_ACCOUNT_LIST;
cur_accountlist CUR_ACCOUNT_LIST;
begin
open cur_accountlist for select * from t;
end;
/

返回结果如下,则表示创建成功:

ANONYMOUS BLOCK EXECUTE

示例2: 弱游标类型。

1、创建测试表t1并插入数据。

create table t1(id int, name varchar2(30));
insert into t1 values(1,'a1');

2、定义一个弱类型游标。

declare
type RECORD_ACCOUNT_LIST1 IS RECORD (id int, name1 varchar2(30));
type CUR_ACCOUNT_LIST1 is ref cursor return RECORD_ACCOUNT_LIST1; 
cur_accountlist1 CUR_ACCOUNT_LIST1;
rc_list RECORD_ACCOUNT_LIST1; 
begin
open cur_accountlist1 for select * from t1; 
loop
fetch cur_accountlist1 into rc_list;
exit when cur_accountlist1%notfound;
dbms_output.put_line(rc_list.id||' '||rc_list.name1); 
end loop; 
end;
/

返回结果如下,则表示创建成功:

ANONYMOUS BLOCK EXECUTE