Postgres功能

时间:2009-04-12 18:39:34

标签: sql postgresql

我需要使用连接进行选择查询。这应该写在一个函数中。我的方法不起作用:

CREATE OR REPLACE FUNCTION test2()
RETURNS SETOF record AS'
DECLARE
    r record;
BEGIN
    for r in SELECT * FROM messages_wall INNER JOIN location ON
         messages_wall.id = location.id
         loop
    return next r;
    end loop;
end; '
LANGUAGE 'plpgsql'

错误:返回“记录”的函数需要列定义列表

我应该从.net应用程序调用此函数。我该怎么办?

3 个答案:

答案 0 :(得分:3)

SELECT * FROM test2() AS tabletest2 (id integer, name text);如果你真的想要使用一个函数,但在这种情况下视图更好

答案 1 :(得分:2)

将表连接到您的函数中,您可以使用view。

退回设置 your_view ;

您可能还必须使用适当的数据类型定义r:

r your_view%ROWTYPE;

您必须指定字段和数据类型。

SELECT * FROM test2() AS fields_1 as INTEGER, fields_2 AS ... ;

答案 2 :(得分:1)

对于您的示例,在(PL / pgSQL)函数中包装连接是不必要的。正如Luc M所提到的那样,视图最简单,最快。

如果您坚持使用某项功能,但下一个选择应为SQL function - 更多信息herehere