Bạn có thể khai thác một tính năng của PL / pgSQL để thực hiện điều này rất rẻ :
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;
cuối cùng là tùy chọn trong trường hợp này.
WARNING
chỉ được nâng lên nếu truy vấn của bạn không trả về bất kỳ hàng nào. Tôi không nêu ra ERROR
trong ví dụ, vì điều này sẽ khôi phục toàn bộ giao dịch (nhưng bạn có thể làm điều đó nếu nó phù hợp với nhu cầu của bạn).
Chúng tôi đã thêm một ví dụ mã sang hướng dẫn sử dụng với Postgres 9.3 để chứng minh điều này.