Możesz wykorzystać funkcję PL/pgSQL, aby zaimplementować to bardzo tanio :
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;
Ostateczny RETURN;
jest w tym przypadku opcjonalne.
WARNING
jest wywoływane tylko wtedy, gdy zapytanie nie zwraca żadnych wierszy. Nie zgłaszam ERROR
w tym przykładzie, ponieważ spowoduje to wycofanie całej transakcji (ale możesz to zrobić, jeśli odpowiada to Twoim potrzebom).
Dodaliśmy przykładowy kod do instrukcji z Postgresem 9.3 aby to zademonstrować.