以下是我的功能:

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%TYPERETURN NEXT r

07-24 15:04