暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

openGauss每日一练第 17 天 |学习openGauss定义游标

原创 黄超 2021-12-17
428

自己安装的openGauss环境
启动openGauss
gs_ctl -D /gauss/data/db1/ start
登录openGauss
gsql -d postgres -p 26000 -r

1.创建游标,且使用select子句指定游标返回的行,分别使用FETCH抓取数据,MOVE重定位游标

create schema schema1;
create table schema1.products
(product_id INTEGER,
product_name Char(30)
);
insert into schema1.products(product_id,product_name) values(1,‘desc’),(2,‘modify’),(3,‘add’),(4,‘create’),(5,‘alter’);
select * from schema1.products;
START TRANSACTION;
CURSOR cursor1 FOR SELECT * FROM schema1.products limit 4;
FETCH FORWARD 2 FROM cursor1;
MOVE FORWARD 1 FROM cursor1;
17_1_1.png
17_1_2.png

2.在系统视图pg_cursors中查看游标

select * from pg_cursors;
end;
17_2.png

3.创建一个使用游标的存储过程

create or replace procedure p_cursor_1
as
r_products RECORD;

CURSOR cursor1 FOR SELECT * FROM schema1.products  ;

begin
if not cursor1%isopen then
open cursor1;
end if;
loop
fetch cursor1 into r_products;exit when cursor1%notfound;RAISE INFO ‘product_id: %,product_name: %’ ,r_products.product_id,r_products.product_name;
end loop;
if cursor1%isopen then
close cursor1;
end if;
end;
/
call p_cursor_1();
17_3.png

4.清理数据

drop procedure p_cursor_1;
drop table schema1.products;
drop schema schema1;
17_4.png

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论