Можете да използвате функция на PL/pgSQL, за да приложите това много евтино :
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;
Последно RETURN;
не е задължително в този случай.
WARNING
се повдига само ако вашата заявка не върне нито един ред. Не повдигам ERROR
в примера, тъй като това би върнало цялата транзакция (но можете да направите това, ако отговаря на вашите нужди).
Добавихме примерен код към ръководството с Postgres 9.3 за да демонстрирате това.