梧桐云原生分析型数据库的游标使用经验

1、游标介绍

        梧桐云原生分析型数据库中游标(cursor)是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果。每个游标区都有一个名字,用户可以用SQL语句逐一从游标中获取记录,并赋给主变量,交由主语言进一步处理。

2、游标的作用

        梧桐云原生分析型数据库的游标是处理结果集的一种机制,它可以定位到结果集中的某一行,多数据进行读写,也可以移动游标定位到你所需要的行中进行操作数据。一般复杂的数据库存储过程,都会有游标的出现,他的用处主要有:
1. 定位到结果集中的某一行。
2. 对当前位置的数据进行读写。
3. 可以对结果集中的数据单独操作,而不是整行执行相同的操作。
4. 是面向集合的数据库管理系统和面向行的程序设计之间的桥梁。

3、游标的优缺点

1. 优点
        1)允许程序对由查询语句 select 返回的行集合中的每一行执行相同或不同的操作,而不是对整个行集合执行同一个操作。
        2)提供对基于游标位置的表中的行进行删除和更新的能力。
        3)游标实际上作为面向集合的数据库管理系统(RDBMS)和面向行的程序设计之间的桥梁,使这两种处理方式通过游标沟通起来。
2. 缺点
        处理大数据量时,效率低下,占用内存大;一般来说,能使用其他方式处理数据时, 最好不要使用游标 ,除非是当你使用while循环,子查询,临时表,表变量,自建函数或其他方式都无法处理某种操作的时候,再考虑使用游标。

4、游标使用说明

4.1 创建游标

create or replace function cursor_demo003()
returns void as
$$
declare
unbound_refcursor refcursor;
v_area_code int;
v_area_code_name varchar(1000);
begin
open unbound_refcursor for execute 'select area_code,area_code_name from xx_xxx_xxxx_xxxx ';
loop
fetch unbound_refcursor into v_area_code,v_area_code_name;
if found then
raise notice ‘%-%’,v_area_code,v_area_code_name;
else
exit;
end if;
end loop;
close unbound_refcursor;
raise notice ‘the end of msg…’;
exception when others then
raise exception ‘error–(%)’,sqlerrm;
end;
$$
LANGUAGE plpgsql;

4.2 调用游标

select cursor_demo003();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值