После вставки оператор отлично работает с Oracle
.
INSERT INTO table_name (col1, col2) VALUES (val1, val2) RETURNING col1 INTO :var ;
Мы можем связать переменную с :var
и выполнить инструкцию.
Однако, когда тот же запрос выполняется в базе данных Postgres, он выдает следующую ошибку.
ОШИБКА: синтаксическая ошибка в или около «INTO».
В чем причина такого поведения?
Я пытался выполнить запрос в блоке PL / pgSQLи он прекрасно работает.
DO $$
DECLARE var integer;
BEGIN
INSERT INTO "table_name "(
"col1, "col2")
VALUES (val1, val2)
RETURNING "col1" INTO var;
END $$
Но приведенный выше запрос не может напрямую использоваться внутри кода C ++ без блока PL / pgSQL, когда мы подключаемся к базе данных Postgres.Я использую PostgreSQL 9.5.4.Поскольку мы поддерживаем независимые от баз данных программные приложения, нам нужно прояснить это поведение.
Я ожидаю, что обе базы данных поддерживают предложение RETURNING .. INTO одинаково.