PL / pgSQLの機能を活用して、これを非常に安価に実装できます。 :
CREATE OR REPLACE FUNCTION f_select_from_some_tbl(int)
RETURNS SETOF some_table AS
$func$
BEGIN
RETURN QUERY
SELECT *
FROM some_table
WHERE other_table_id = $1;
IF NOT FOUND THEN
RAISE WARNING 'Call with non-existing other_table_id >>%<<', $1;
END IF;
END
$func$ LANGUAGE plpgsql;
最後のRETURN;
この場合はオプションです。
WARNING
クエリが行を返さない場合にのみ発生します。 ERROR
を発生させていません この例では、これによりトランザクション全体がロールバックされるためです(ただし、ニーズに合っている場合はロールバックできます)。
コード例