测试用表
drop table if exists test;
create table test (
id bigserial primary key,
name varchar(20),
age int
);
delete from test;
insert into test(name, age)
values (张三, 1),
(李四, 2),
(王五, 3),
(李四, 4),
(王五, 5);
示例1:
create or replace function test1 (userName varchar(20)) returns int as
$$
declare
u record;
sumAge int := 0;
-- 声明游标
curs cursor for select name,age from test where name = userName;
begin
-- 循环读取游标数据
for u in curs loop
sumAge = sumAge + u.age;
end loop;
return sumAge;
end
$$
language plpgsql;
示例2
create or replace function test1 (userName varchar(20)) returns int as
$$
declare
uName varchar(20);
uAge int;
sumAge int := 0;
-- 声明游标
curs cursor for select name,age from test where name = userName;
begin
-- 打开游标
open curs;
-- 循环读取游标数据
loop
-- 使用游标
fetch curs into uName,uAge;
exit when not found;
sumAge = sumAge + uAge;
end loop;
-- 关闭游标
close curs;
return sumAge;
end
$$
language plpgsql;
测试
select test1(王五)