【发布时间】:2015-03-10 03:26:28
【问题描述】:
我使用的以下代码返回一个整数1:
CREATE TYPE my_test AS (
foo Integer
);
CREATE FUNCTION foo_out()
RETURNS SETOF Integer AS
$$
BEGIN
RETURN QUERY
SELECT 1 as foo;
END
$$
LANGUAGE plpgsql;
CREATE FUNCTION foo1()
RETURNS SETOF my_test
AS $$
DECLARE
x my_test;
BEGIN
FOR x IN
SELECT foo_out()
LOOP
RETURN NEXT x;
END LOOP;
END;
$$
LANGUAGE 'plpgsql';
select * from foo1();
但是为什么返回相同的代码:
ERROR: invalid input syntax for integer: (1)
如果我将返回类型更改为:
CREATE FUNCTION foo_out()
RETURNS SETOF my_test
也应该是integer!?可能是系统在整数类型和包含整数的自定义类型之间存在差异。在这里可以使用自定义类型应该改变什么?
【问题讨论】:
-
你可以在第二个函数中使用
select * from foo_out()。
标签: postgresql for-loop types row plpgsql