用于行 mod 3 的 PL/pgSQL 游标
Posted
技术标签:
【中文标题】用于行 mod 3 的 PL/pgSQL 游标【英文标题】:PL/pgSQL Cursor for rows mod 3 【发布时间】:2016-04-20 23:20:07 【问题描述】:所以我在 PL/pgSQL 中工作,我想创建一个函数,它只返回 row%3=0 行中的数据,我需要使用游标。
我有以下,但显然不工作
create or replace function punto6() returns void AS $$
declare
rPers personas%ROWTYPE;
curs3 CURSOR IS select * from personas order by nombres;
BEGIN
FOR rPers IN curs3 LOOP
if current of curs3 % 3 =0 THEN
RAISE NOTICE ''Nombre: % %'', rPers.nombres,
rPers.apellidos;
END LOOP;
return;
end;
$$ LANGUAGE plpgsql;
【问题讨论】:
真的很遗憾你需要使用光标,因为有更好的方法来做到这一点。 【参考方案1】:create or replace function punto6() returns void AS $$
declare
rPers RECORD;
curs3 CURSOR IS select * from personas order by nombres;
numero int;
BEGIN
numero = 1;
OPEN curs3;
LOOP
FETCH curs3 INTO rPers;
EXIT WHEN NOT FOUND;
if numero % 3 = 0 THEN
RAISE NOTICE 'Nombre: % %', rPers.nombres,
rPers.apellidos;
END IF;
numero = numero + 1;
END LOOP;
CLOSE curs3;
return;
end;
$$ LANGUAGE plpgsql;
【讨论】:
以上是关于用于行 mod 3 的 PL/pgSQL 游标的主要内容,如果未能解决你的问题,请参考以下文章