博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PL/pgSQL的 RETURN NEXT例子
阅读量:6292 次
发布时间:2019-06-22

本文共 1309 字,大约阅读时间需要 4 分钟。

从网上找到例子:

可以说,RETURN NEXT要用在循环中:

例子一:

数据准备:

CREATE TABLE foo (fooid INT, foosubid INT, fooname TEXT);INSERT INTO foo VALUES (1, 2, 'three');INSERT INTO foo VALUES (4, 5, 'six');

生成函数:

CREATE OR REPLACE FUNCTION getAllFoo() RETURNS SETOF foo AS$BODY$DECLARE    r foo%rowtype;BEGIN    FOR r IN SELECT * FROM foo    WHERE fooid > 0    LOOP        -- can do some processing here        RETURN NEXT r; -- return next row of SELECT    END LOOP;    RETURN;END$BODY$LANGUAGE 'plpgsql';

运行结果:

pgsql=# SELECT * FROM getallfoo(); fooid | foosubid | fooname -------+----------+---------     1 |        2 | three     4 |        5 | six(2 rows)pgsql=#

例子二:

数据准备:

CREATE TABLE test (textcol varchar(10), intcol int); INSERT INTO test VALUES ('a', 1); INSERT INTO test VALUES ('a', 2); INSERT INTO test VALUES ('b', 5); INSERT INTO test VALUES ('b', 6);

生成函数:

CREATE OR REPLACE FUNCTION ReturnNexting(pText Text) RETURNS SETOF test AS $$         DECLARE                 rec RECORD;         BEGIN                 FOR rec IN SELECT * FROM test WHERE textcol = pText LOOP                         RETURN NEXT rec;                 END LOOP;                 RETURN;         END; $$ LANGUAGE plpgsql;

运行结果:

pgsql=# SELECT * FROM ReturnNexting('a'); textcol | intcol ---------+-------- a       |      1 a       |      2(2 rows)pgsql=#

转载地址:http://gjjta.baihongyu.com/

你可能感兴趣的文章
短址(short URL)
查看>>
第十三章 RememberMe——《跟我学Shiro》
查看>>
mysql 时间函数 时间戳转为日期
查看>>
索引失效 ORA-01502
查看>>
Oracle取月份,不带前面的0
查看>>
Linux Network Device Name issue
查看>>
IP地址的划分实例解答
查看>>
如何查看Linux命令源码
查看>>
运维基础命令
查看>>
入门到进阶React
查看>>
SVN 命令笔记
查看>>
检验手机号码
查看>>
重叠(Overlapped)IO模型
查看>>
Git使用教程
查看>>
使用shell脚本自动监控后台进程,并能自动重启
查看>>
Flex&Bison手册
查看>>
solrCloud+tomcat+zookeeper集群配置
查看>>
/etc/fstab,/etc/mtab,和 /proc/mounts
查看>>
Apache kafka 简介
查看>>
socket通信Demo
查看>>