【问题标题】:Using insert in a select statement in SQL在 SQL 的 select 语句中使用 insert
【发布时间】:2011-09-19 19:26:22
【问题描述】:

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

【问题讨论】:

    标签: sql oracle jdbc


    【解决方案1】:

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

    【讨论】:

    【解决方案2】:

    您可以在INSERT 语句中使用RETURNING 关键字。

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

    【讨论】:

      【解决方案3】:

      你试过 OUTPUT 命令吗?

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 2010-11-09
          • 2012-10-18
          • 1970-01-01
          • 1970-01-01
          • 2021-06-16
          • 2021-01-19
          • 2011-03-04
          • 2016-07-02
          相关资源
          最近更新 更多