Вы не можете перехватить сообщение INSERT 0 1
буквально, поскольку оно не возвращается оператором INSERT, а генерируется инструментом командной строки psql
на основе status оператора INSERT.
Итак, если вы хотите увидеть это сообщение, вам нужно сгенерировать его самостоятельно в функции (PL / pgSQL для этого не нужен):
CREATE FUNCTION insert_user_test (p_username text)
RETURNS text
LANGUAGE SQL
AS $$
with inserted as (
INSERT INTO users(username) values(p_username))
returning *
)
select concat('INSERT 0 ', count(*))
from inserted;
$$;
Если вы не хотели видеть сообщение INSERT 0 1
, вы можете просто вместо этого вернуть имя пользователя:
CREATE FUNCTION insert_user_test (p_username text)
RETURNS text
LANGUAGE SQL
AS $$
INSERT INTO users(username) values(p_username))
returning username;
$$;
Или полная строка, включая введенные по умолчанию значения:
CREATE FUNCTION insert_user_test (p_username text)
RETURNS setof users
LANGUAGE SQL
AS $$
INSERT INTO users(username) values(p_username))
returning *;
$$;