Присвоение значения переменной с помощью предложения RETURNING
Я пытаюсь сделать это, но это синтаксическая ошибка, что я делаю не так?
declare myid := insert into oameni values(default,'lol') returning id;
мой стол:
create table oameni
(
id serial primary key,
name varhcar(10)
);
2 ответа
Решение
Вам нужно использовать предложение INTO в RETURNING, чтобы установить значение, возвращаемое в вашу переменную:
DECLARE myid OAMENI.id%TYPE;
INSERT INTO oameni
VALUES
(default,'lol')
RETURNING id INTO myid;
Вам также необходимо указать тип данных вашей переменной; Я рад видеть, что postgresql поддерживает%TYPE и% ROWTYPE.
В дополнение к основному ответу стоит отметить, что если вы делаете это вне хранимой процедуры, вы должны обернуть код в блок «DO», например:
DO $$
DECLARE
myid mytable.id%TYPE;
BEGIN
INSERT INTO mytable (...)
VALUES (...)
RETURNING id INTO myid;
END $$