为 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;
我有一个 运行 是 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;