Я изо всех сил пытался заставить это работать, потому что это довольно строго о добавлении точек с запятой в точно правильных местах. Но как только вы привыкаете к этому, это работает хорошо. Помимо невозможности возврата записей, конечно, вы можете создавать уведомления и исключения и делать другие обходные пути, такие как использование временных таблиц, как @ErwinBrandstetter указал в комментарии выше.
например:.
DO
$$
BEGIN
IF EXISTS(SELECT 'any rows?'
FROM {your_table}
WHERE {your_column} = 'blah')
THEN
RAISE NOTICE 'record exists';
ELSE
RAISE EXCEPTION 'record does not exist';
END IF;
DROP TABLE IF EXISTS foo;
CREATE TEMP TABLE foo AS
SELECT 'bar'::character varying(5) as baz;
END
$$;
SELECT * FROM foo;