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

时间:2015-03-13 12:15:47

标签: oracle plsql oracle11g oracle10g

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

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

让我们说这个作业第一次运行,它会插入10条记录。现在,所有插入的记录都应该将Job_Run_Id设置为10001.

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

有可能。?请提供您的意见。

2 个答案:

答案 0 :(得分:1)

当然,你可以通过以下几种方式做到这一点。首先,您可以创建一个序列,然后在运行批处理之前从中选择下一个数字。接下来就是:

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);

答案 1 :(得分:1)

使用序列确保每个作业运行获得唯一值。使用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;