Você pode explorar um recurso do PL/pgSQL para implementar isso muito barato :
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;
Um
RETURN;
final é opcional neste caso. O
WARNING
só é gerado se sua consulta não retornar nenhuma linha. Não estou gerando um ERROR
no exemplo, pois isso reverteria toda a transação (mas você pode fazer isso se atender às suas necessidades). Adicionamos um exemplo de código ao manual com Postgres 9.3 para demonstrar isso.