而对于return next 来说,它直到执行到不带参数的return时才表示该函数结束,因此对于return next来说,它实际上并不从函数中返回,它只是简单的把表达式的值保存起来,然后继续执行plpgsql函数里的下一条语句,随着return next命令的迭代执行,结果集最终被建立起来,而它的调用方式一般也是select * from some_func();它可以被放在from子句中被当做数据源使用,而且需要指出的是,如果数据源很大,那么该方式来构建结果集会导致很大的性能损失。
对于条件语句,我们通常使用的格式有:
(1)if 条件 then 语句 end if;
(2) if 条件 then 语句 else 语句 endif;
(3) if 条件 then 语句 elseif 条件 then 语句 elseif 条件 then 语句 else 语句 endif;
对于循环,通常使用的格式有:
(1)loop 语句 end loop [标号] ;其中loop定义一个无条件的循环,直到exit或者return语句终止。可选的label可以由exit和continue语句使用,用于在嵌套循环中声明应该应用于哪一层循环。
(2)exit [label] [when expression]; 如果没有给出label,就退出最内层的循环,然后执行跟在END LOOP后面的语句,如果给出了label,它必须是当前或者更高层的嵌套循环块或者语句块的标签。之后该命名快或者循环就会终止,而控制则直接转到对应循环块的END后面的语句上。如果声明了when,则exit命令只有在expression为真的时候才会被执行,否则将直接执行exit后面的语句。通常我们的使用格式是:loop 其他语句 exit when 条件; end loop;