使用OracleDB中的Loop使用来自不同表的行更新表

时间:2019-05-27 15:39:23

标签: database oracle plsql

我是OracleDB的新手,希望能帮助我。我有两个表,如下图所示。我想使用循环(也许在过程中)从Table2到Table1插入任意数量的行。这可以通过遍历Table2中的ID并将从我这里选择的ID插入到New Updated Table1中来实现 图片: enter image description here

第二个表必须保持相同,并且我必须能够对满足我的需求的Table2中的每一行执行此操作。我写了一个伪代码,但不确定如何实现它。预先感谢!

1 个答案:

答案 0 :(得分:1)

这是原始 table1

SQL> select * from table1;

        ID NAME            PHONE
---------- ---------- ----------
         1 Bob            123456
         2 Jake           654975
         3 Dillan         252487

如果您要“复制”所需的任何行,那么一个简单的选择就是一个纯SQL INSERT语句,例如

SQL> insert into table1 (id, name, phone)
  2    select id, name, phone
  3    from table2
  4    where id = &par_id;
Enter value for par_id: 4

1 row created.

({&par_id是一个SQL * Plus替代变量)

或者,您可以将其中一些指定为IN列表,例如

SQL> insert into table1 (id, name, phone)
  2    select id, name, phone
  3    from table2
  4    where id in (5, 6);

2 rows created.

结果是

SQL> select * from table1 order by id;

        ID NAME            PHONE
---------- ---------- ----------
         1 Bob            123456
         2 Jake           654975
         3 Dillan         252487
         4 Harley         265687
         5 Jack           244587
         6 Luther         259876

6 rows selected.

或者,您可以编写一个过程来做到这一点(循环执行?为什么不这样做,如果它能完成这项工作),但是我想最终的选择取决于您究竟想做什么。目前,我看不到需要PL / SQL。