1
如何在postgres中的函数中使用select * from some_table?PostgreSQL函数select *
如何在postgres中的函数中使用select * from some_table?PostgreSQL函数select *
CREATE OR REPLACE FUNCTION my_function() RETURNS INTEGER AS '
DECLARE
your_record your_table%ROWTYPE;
BEGIN
FOR your_record IN SELECT * FROM your_table
LOOP
--
-- You can access fields of your table using .
-- your_record.your_field
...
END LOOP;
END;
' LANGUAGE 'plpgsql'
STABLE;
或
CREATE OR REPLACE FUNCTION my_function() RETURNS INTEGER AS '
DECLARE
your_record your_table%ROWTYPE;
BEGIN
SELECT * INTO your_record FROM your_table;
--
-- You can access fields of your table using .
-- your_record.your_field
END;
' LANGUAGE 'plpgsql'
STABLE;
编辑:
与Join返回一个记录:
CREATE OR REPLACE FUNCTION my_function() RETURNS SETOF record AS '
DECLARE
your_record record;
BEGIN
--
-- You should specify a list of fields instead of *
--
FOR your_record IN SELECT * FROM your_table INNER JOIN ...
RETURN NEXT your_record;
END LOOP;
END;
' LANGUAGE 'plpgsql'
STABLE;
要使用创建my_function(),您必须指定字段和数据类型: See details here
有一个smipler方法,如果你想使用SQL的功能,在功能使用SQL语言:
CREATE FUNCTION getallzipcodes()
RETURNS SETOF zip AS
$BODY$
SELECT * FROM zip;
$BODY$
LANGUAGE 'sql';
,这可能是有用的太(如何调用函数)
SELECT function_returning_setof(); -- Wrong!
SELECT * FROM function_returning_setof(); -- OK!
SELECT function_returning_scalar(); -- OK
您的意思是一个函数返回?否则,这个问题没有任何意义。然后你应该指定你所尝试的和你得到的错误。 – 2009-04-12 12:18:17
您可能想要提供更多信息,您想要实现什么,您尝试过什么,如何失败以及您希望如何工作。 – 2009-04-13 19:23:26