Использование вставки в операторе выбора в SQL - PullRequest
0 голосов
/ 19 сентября 2011

У меня есть таблица person с столбцами personID, firstName, lastName, DOB и пол. Когда я вставляю каждую запись, я автоматически увеличиваю столбец personID с последовательностью. Мне нужно это значение для каждой записи, которую я вставляю, поскольку я должен отправить ее в другом запросе. Есть ли способ, которым я могу использовать оператор выбора в операторе вставки, чтобы получить значение. Я не могу использовать «где», потому что я принимаю дубликаты других столбцов. Таким образом, каждый уникальный человек идентифицируется только по personID. Я использую JDBC API для подключения к БД. Есть ли возможность сделать звонок в JDBC?

Ответы [ 4 ]

2 голосов
/ 19 сентября 2011

Не уверен, поможет ли это, но если вы используете PL / SQL, вы можете использовать предложение RETURNING INTO ...

Например:

DECLARE
 x emp.empno%TYPE;
BEGIN
  INSERT INTO emp
  (empno, ename)
  VALUES
  (seq_emp.NEXTVAL, 'Morgan')
  RETURNING empno
  INTO x;

  dbms_output.put_line(x);
END;
/

Ссылка: http://psoug.org/reference/insert.html

1 голос
/ 19 сентября 2011

Вы можете использовать ключевое слово RETURNING в своем выражении INSERT.

INSERT INTO Person (...) VALUES (...)
RETURNING person_id INTO nbr_id
0 голосов
/ 19 сентября 2011

Вы пробовали команду OUTPUT?

INSERT INTO TableName(FirstName, LastName, DOB, Sex)
VALUES (<FirstNamei>, <LastNamei>, <DOBi>, <Sexi>)
OUTPUT inserted.PersonID
WHERE <Conditions>
0 голосов
/ 19 сентября 2011

Я думаю, NEXTVAL и CURRVAL должны помочь.Проверьте эту ссылку: псевдостолбцы последовательности , последний пример (повторное использование текущего значения последовательности)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...