在SQL中的select语句中使用insert

时间:2011-09-19 19:26:22

标签: sql oracle jdbc

我有一个包含personID,firstName,lastName,DOB和sex列表的人。当我插入每条记录时,我会自动增加带有序列的personID列。我需要为我插入的每个记录的值,因为我必须在另一个查询中发送它。有什么办法可以在insert语句中使用select语句来检索值。我不能使用'where'因为我接受其他列的重复。因此,每个唯一的人仅由personID标识。我正在使用jdbc API连接到DB。是否有可能在JDBC中进行调用?

4 个答案:

答案 0 :(得分:2)

不确定这是否有帮助,但如果您使用的是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 :(得分:1)

您可以在RETURNING声明中使用INSERT关键字。

INSERT INTO Person (...) VALUES (...)
RETURNING person_id INTO nbr_id

答案 2 :(得分:0)

我认为NEXTVALCURRVAL应该有所帮助。请查看此参考: Sequence Pseudocolumns ,最后一个示例(重复使用序列的当前值)

答案 3 :(得分:0)

您是否尝试过OUTPUT命令?

INSERT INTO TableName(FirstName, LastName, DOB, Sex)
VALUES (<FirstNamei>, <LastNamei>, <DOBi>, <Sexi>)
OUTPUT inserted.PersonID
WHERE <Conditions>
相关问题