我有一个运行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。
有可能。?请提供您的意见。
答案 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;