小编kwe*_*nji的帖子

如何复制多行(Oracle)

我正在尝试创建一个将复制表的多行(或只有一行)并为每行插入增加ID的过程.

我的问题是,在我的程序中,我使用游标选择要复制的行,当我选择所有没有WHERE条件的行时,光标一切正常.但是当我设置WHERE条件只选择一行时......没有任何反应

这是我的程序

CREATE OR REPLACE PROCEDURE DuplicateEmployee (p_EmployeeID IN Employee.id%TYPE)
 AS
  p_New_EmployeeID Employee.id%TYPE;
  CURSOR c_DuplicateEmployee IS
    SELECT *
        FROM Employee
        WHERE Employee.id = p_EmployeeID; -- if this line is deleted all content is duplicated
  row_Employee c_DuplicateEmployee%ROWTYPE;
    BEGIN
      FOR myEmployee IN c_DuplicateEmployee LOOP
          p_New_EmployeeID := employee_seq.NEXTVAL;
          INSERT INTO Employee(id, first_name, last_name, start_date, end_date, salary, city, description)
            VALUES(p_New_EmployeeID, myEmployee.first_name, myEmployee.last_name, myEmployee.start_date, myEmployee.end_date, myEmployee.salary, myEmployee.city, myEmployee.description);
      END LOOP;
    COMMIT;
   END DuplicateEmployee;
Run Code Online (Sandbox Code Playgroud)

我知道在这个示例中有一个选择要复制的主键的过程是没有意义的,但在我的生产基础中,它将用于选择外键.

Bellow是创建测试表所需的代码,以及我用于此过程的SEQUENCE

CREATE TABLE Employee
  (
    ID         VARCHAR2(4 BYTE) NOT NULL, …
Run Code Online (Sandbox Code Playgroud)

oracle plsql cursor

3
推荐指数
1
解决办法
5952
查看次数

标签 统计

cursor ×1

oracle ×1

plsql ×1