我有一个名为person
的表,其中有id,name,status
,我想返回行作为一个函数的结果与1参数(名称)。有人能帮助我吗?请让它容易,因为我很noob在PostgreSQL。
这是一个普通函数的代码
create or replace function fn_list(vname varchar) returns void as $$
begin
SELECT id,name,status from usuario WHERE name= vname;
end;
$$ language plpgsql;
我知道我返回了一个void函数,但是如果我想要一个行列表,我该怎么做呢?
3条答案
按热度按时间guicsvcw1#
我知道Oracle中的流水线返回就是这样做的,所以我用它从plpgsql中找到了'RETURN NEXT':
http://www.postgresql.org/message-id/007b01c6dc31$ae395920$0a00a8c0@trivadis.com
同时在grokbase上:
http://grokbase.com/t/postgresql/pgsql-performance/069kcttrfr/pipelined-functions-in-postgres
(Edit添加正式文件):http://www.postgresql.org/docs/9.2/static/plpgsql-control-structures.html
杀手,我得自己用这个了。
再次编辑以添加一些演示代码(直接来自postgresql.org文档):
0tdrvxhp2#
使用循环返回查询结果速度慢、效率低,甚至不需要PL/pgSQL的开销。
最佳解决方案是:
return query
而不是循环:然后使用以下命令调用它:
qij5mzcb3#
很多答案都忽略了使用函数的重要部分,下面是一个更新后的postgres函数使用方法(包括声明、变量、参数、返回值和运行),下面是一个用"hello world"更新右下角"blurb"的例子。
| id(序列号)|发布标识(文本)|推特(文本)|
| - ------|- ------|- ------|
| 1个|美国广播公司|你好世界|
| 第二章|定义|导语|