Můžete využít funkci PL/pgSQL a implementovat to velmi levně :
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;
Poslední RETURN;
je v tomto případě volitelný.
WARNING
se vyvolá pouze v případě, že váš dotaz nevrací žádné řádky. Nezobrazuji ERROR
v tomto příkladu, protože by to vrátilo celou transakci zpět (ale můžete to udělat, pokud to vyhovuje vašim potřebám).
Přidali jsme příklad kódu k příručce s Postgres 9.3 to demonstrovat.