日付列 (年、月、日、および「スタンプ」と呼ばれる 3 つの組み合わせ) と関連する値 (avalue) を持つ 2 つのテーブルがあります。(指定された日付で) 2 つのテーブル間の比率を返し、以前に指定された制限日の後に固定値を返す関数が必要です。入力に続いて最初に利用可能な日付を選択する必要があります。
ここに私が書いたコードがあります:
CREATE OR REPLACE FUNCTION myfunction(theyear int, themonth int, theday int) RETURNS real AS '
DECLARE
foo tablenamea%rowtype;
BEGIN
IF ((theyear >= 2000) AND (themonth >= 6)) OR (theyear > 2000) THEN
RETURN 0.1;
ELSE
FOR foo IN SELECT (a.avalue/b.avalue) FROM tablenamea AS a, tablenameb AS b
WHERE a.stamp = b.stamp AND a.year = theyear AND a.month = themonth AND a.day >= theday ORDER BY a.year, a.month, a.day
LOOP
RETURN NEXT foo;
END LOOP;
RETURN;
END IF;
END;
' LANGUAGE plpgsql;
これは私にこのエラーを与え続けます:
cannot use RETURN NEXT in a non-SETOF function