为 Oracle 中的每个查询执行插入一个序列

Insert a Sequence for every query execution in Oracle

我有一个 运行 是 sql 查询的自动化作业。下面是查询。

Insert into employee_master (Job_Run_ID, Employee_ID, Employee_Name, Employee_Location) values (runId, eId, eName, eLoc);

假设此作业是第一次 运行s,它插入了 10 条记录。现在,所有插入的记录都应该有 Job_Run_Id 作为 10001。

对于第二个 运行,Job_Run_Id 应该递增,对于插入 table 的所有记录,10002 应该是 Job_Run_Id。

可以吗?请提供您的意见。

当然,您可以通过多种方式完成此操作。首先,您可以创建一个序列,然后 select 是 运行 您的批次之前的下一个数字。接下来就是简单地:

SELECT Max(Job_Run_ID) + 1 INTO New_Job_ID FROM employee_master;

然后做你的工作循环运行你的插入:

INSERT INTO employee_master (New_Job_ID, Employee_ID, Employee_Name, Employee_Location) 
VALUES (runId, eId, eName, eLoc);

使用序列确保每个作业 运行 获得唯一值。使用 PL/SQL 为作业 运行 中插入的所有行重新使用相同的值,例如:

<<p>>
DECLARE
  job_run_id NUMBER;
BEGIN
  job_run_id := job_run_seq.NEXTVAL;
  INSERT INTO employee_master (job_run_id, ...)
  VALUES (p.job_run_id, ...);
END p;