U kunt een functie van PL/pgSQL gebruiken om dit zeer goedkoop te implementeren :
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;
Een laatste RETURN;
is in dit geval optioneel.
De WARNING
wordt alleen gegenereerd als uw zoekopdracht geen rijen retourneert. Ik plaats geen ERROR
in het voorbeeld, omdat dit de hele transactie zou terugdraaien (maar u kunt dat doen als het aan uw behoeften voldoet).
We hebben een codevoorbeeld toegevoegd naar de handleiding met Postgres 9.3 om dit aan te tonen.