以下是我的功能:
CREATE OR REPLACE FUNCTION getAllFoo()
RETURNS SETOF "TraderMonthOutstanding" AS
$BODY$
DECLARE
r record;
BEGIN
FOR r IN (select * from "TraderMonthOutstanding"
where "TraderId"=1 and "IsPaid"=false)
LOOP
RETURN NEXT r.TraderId;
END LOOP;
RETURN;
END
$BODY$
LANGUAGE 'plpgsql' ;
我只想从这个循环中得到
TraderId
,但是我不能得到它,因为它给了我一个错误。我做错什么了?
最佳答案
您声明getAllFoo()
将RETURNS SETOF "TraderMonthOutstanding"
(一组具有tableTraderMonthOutstanding
结构的行),但随后您将RETURN NEXT r.TraderId
(单个字段)。
您需要将声明的返回类型更改为RETURNS SETOF "TraderMonthOutstanding".TraderId%TYPE
或RETURN NEXT r
。