Oracle всегда получает идентификатор вставленной строки с идентификатором

В настоящее время у меня есть таблица с этой структурой:

CREATE TABLE "DUMMY_SCHEMA"."NAMES"
(
  "ID" NUMBER(10,0) GENERATED ALWAYS AS IDENTITY (START WITH 1 INCREMENT BY 1 CACHE 20) NOT NULL 
, "NAME" NVARCHAR2(1024) NOT NULL 
, CONSTRAINT "NAMES_PK" PRIMARY KEY ("ID")
);

В SQL Server мне нужно только сделать следующее, чтобы получить идентификатор вставленной строки.

INSERT INTO [NAMES]([NAME])VALUES('Random'); SELECT SCOPE_IDENTITY() Id

Что было бы эквивалентно Oracle 12c?


person AceVentur4    schedule 26.06.2018    source источник
comment
Я бы рекомендовал использовать имена таблиц и столбцов без КАвычек: CREATE TABLE dummy_schema.names (id NUMBER.... - это обычный способ...   -  person wolφi    schedule 26.06.2018


Ответы (1)


Эквивалент

INSERT INTO dummy_schema.names (name) VALUES ('Random') 
RETURNING id INTO :myvalue;

Механизм получения возвращаемого идентификатора зависит от языка хоста (Java, PL/SQL, SQL*Plus и т. д.).

person wolφi    schedule 26.06.2018
comment
Спасибо. Переменная :myvalue будет какого типа? - person AceVentur4; 27.06.2018
comment
Тот же тип данных, что и столбец первичного ключа, в вашем случае NUMBER(10,0). Какой язык вы используете? - person wolφi; 27.06.2018
comment
C# с щеголеватой как ORM - person AceVentur4; 27.06.2018
comment
Извините, не знаю, но взгляните на stackoverflow.com/questions/9789737/ - person wolφi; 27.06.2018
comment
спасибо, наконец-то все заработало, как вы сказали! - person AceVentur4; 28.06.2018