Du kan utnyttja en funktion i PL/pgSQL för att implementera detta mycket billigt :
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;
En sista RETURN;
är valfritt i det här fallet.
WARNING
höjs bara om din fråga inte returnerar några rader. Jag visar inte ett ERROR
i exemplet, eftersom detta skulle rulla tillbaka hela transaktionen (men du kan göra det om det passar dina behov).
Vi har lagt till ett kodexempel till manualen med Postgres 9.3 för att visa detta.