Du kan udnytte en funktion i PL/pgSQL til at implementere dette meget 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 sidste RETURN;
er valgfri i dette tilfælde.
WARNING
hæves kun, hvis din forespørgsel ikke returnerer nogen rækker. Jeg rejser ikke en ERROR
i eksemplet, da dette ville rulle hele transaktionen tilbage (men du kan gøre det, hvis det passer til dine behov).
Vi har tilføjet et kodeeksempel til manualen med Postgres 9.3 for at demonstrere dette.