PL/pgSQL的 RETURN NEXT例子

简介:

从网上找到例子:

可以说,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; 
复制代码

运行结果:

目录
相关文章
|
4月前
|
存储 JSON 关系型数据库
mysql中find_in_set()函数用法详解及增强函数
总结而言,`FIND_IN_SET()`是MySQL中处理由逗号分隔的字符串列表的一种便捷方法,尤其适用于列表相对较短且不经常更改的场景。然而,对于更为复杂的需要高性能和可扩展性的数据库设计,它可能不是最优选择,应考虑使用更加正规化的数据库结构。
517 2
mysql中find_in_set()函数用法详解及增强函数
|
5月前
|
关系型数据库 MySQL
mysql动态查列(case when then else end)
mysql动态查列(case when then else end)
|
关系型数据库 MySQL 数据库
MySQL中find_in_set函数的使用
1.语法 FIND_IN_SET(str,strlist) (1)str 要查询的字符串 (2)strlist 字段名; 参数以”,”分隔 如 (1,2,6,8) 查询字段(strlist)中包含(str)的结果,返回结果为null或记录 假如字符串str在由N个子链组成的字符串列表strlist 中,则返回值的范围在 1 到 N 之间。 一个字符串列表就是一个由一些被 ‘,’ 符号分开的子链组成的字符串。如果第一个参数是一个常数字符串,而第二个是type SET列,则FIND_IN_SET() 函数被优化,使用比特计算。 如果str不在strlist 或strlist 为空字符串,则返回
787 0
MySQL中find_in_set函数的使用
|
关系型数据库 MySQL
mysql中SUM函数返回NULL问题
mysql中SUM函数返回NULL问题
|
SQL 关系型数据库 MySQL
Could not execute query ---> MySql.Data.MySqlClient.MySqlException: You have an error in your SQL sy
Could not execute query ---> MySql.Data.MySqlClient.MySqlException: You have an error in your SQL sy
40 0
|
Oracle 关系型数据库 MySQL
Mysql,Oracle中 sum、count函数使用条件判断
Mysql,Oracle中 sum、count函数使用条件判断
Mysql,Oracle中 sum、count函数使用条件判断
|
存储 关系型数据库 MySQL
mysql中FIND_IN_SET和like的区别
在数据库中新建一张测试表t_user,包含三个字段'id','name','grilfriend',字段很容易看出,这是记录一个人的女朋友的表,注意这里的‘firlfriend’字段可以是多个人名,之间用逗号分开,如‘杨幂01,杨幂02’;这样的数据存储我们也经常见到。
274 0
mysql中FIND_IN_SET和like的区别
|
关系型数据库 MySQL
mysql find_in_set() 函数使用
mysql find_in_set() 函数使用
192 0
|
SQL 关系型数据库 MySQL
MySQL的find_in_set()函数
今天发现开发写的SQL中包含了find_in_set(),从来没见过,貌似挺有用的,了解一下
1808 0