Присвоение значения переменной с помощью предложения 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 $$
Другие вопросы по тегам