Я пытаюсь запустить запрос через Slick в Scala, который вставляет запись в db Oracle и возвращает автоматически сгенерированный идентификатор в качестве результата. Я вижу, что это возможно с использованием синтаксиса Slick, но возможно ли это, используя простой SQL-запрос? С приведенным ниже кодом я могу получить только возвращаемое значение -1.Slick/Oracle PLAIN SQL Получить автоматически сгенерированный идентификатор после вставки
val name = "Bob"
db.run(sql"""DECLARE NEW_PERSON_ID;
BEGIN
INSERT INTO TB_PEOPLE (ID, NAME)
VALUES(SEQ_PEOPLE.NEXTVAL, $name)
RETURNING ID INTO NEW_PERSON_ID;
END;""".as[Int])
Я думаю, что это больше проблема с вашего синтаксиса Oracle, пожалуйста, проверьте ответ от Атиллы [здесь] (http://stackoverflow.com/questions/34811283/retrieve-oracle-last-inserted-identity) –
части Проблема заключается в том, что в вашем 'declare new_person_id' отсутствует тип данных (вероятно,' tb_people.id% type'), поэтому блок не скомпилируется и, возможно, это дает -1. Однако фиксация, которая не вернет ничего вызывающему (и я не знаю Scala). –