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();

被折叠的 条评论
为什么被折叠?



