できません DO
からの戻り値 声明。代わりにplpgsql関数を作成してください。
RETURNING
を使用して返品タイプを定義する方法はいくつかあります。 句またはOUT
パラメーター。 CREATE FUNCTION
に関するマニュアルをお読みください
。
関数から値を返す方法はいくつかあります。 関数からの復帰の章をお読みください マニュアルで。
特に、テーブルから行全体を返そうとしているので、登録されたタイプのテーブルを関数宣言に使用できます。
CREATE FUNCTION foo ()
RETURNING SETOF test_log
$func$
BEGIN
IF 'a' = 'a' THEN
RETURN QUERY
SELECT * FROM test_log LIMIT 10;
ELSE
RAISE WARNING $$Didn't work!$$;
END IF;
END
$func$ LANGUAGE plpgsql;
電話:
SELECT * FROM foo ();
または、ここでSOを検索してみてください。 多くの関連するコード例 。
DO
の回避策 ステートメント
関数を使用できない場合、DOステートメントを使用した中途半端な回避策は、一時テーブルを使用することだけです。
CREATE TEMP TABLE tbl_tmp AS
SELECT * FROM test_log LIMIT 0;
$do$
BEGIN
IF 'a' = 'a' THEN
INSERT INTO tbl_tmp
SELECT * FROM test_log LIMIT 10;
ELSE
RAISE WARNING $$Didn't work!$$;
END IF;
END
$do$ LANGUAGE plpgsql;
SELECT * FROM tbl_tmp;