我是 oracle 新手,所以不确定如何在 oracle 中编写存储过程。目前我正在谷歌上搜索并阅读一些关于 Oracle SP 的网上文章/博客。我开始对此有了一些想法。即使这样,我也有以下几个问题。
我想做的是,
我有一个 Employee 表,其中包含 emp_id、Region、Division、Product、Title 等。
我还有 emp_update 表,其中包含 emp_id、列(更改的内容)、old_value、new_value 和日期。
例如,emp_update 表将有一行 for emp_id = 10,表示区域在 4 月 30 日从亚洲更改为英国。
同一 emp 的另一行表示产品在 4 月 30 日从 A 更改为 B。
因此,同一员工和同一日期的多个条目。
现在在那个特定的日期,我正在运行一个 cron 作业,它将运行这个 Sp 以将员工表更新为这些更新。
例如,在 4 月 30 日,更新员工集 region = UK,Product = B,其中 emp_id = 10。
我想为员工运行一条更新语句,其中包含该日期来自 emp_update 表的所有更新。
所以基本上,
从 emp_update 获取所有员工,并在今天更新。遍历员工更新,将它们组装在单个更新语句中,然后执行该更新查询。对每个员工重复。
请帮忙
编辑1:-
CREATE OR REPLACE
PROCEDURE SP_RUN_EMPLOYEE_UPDATES
IS
CURSOR
c_emp
IS
SELECT DISTINCT(employee_id) as employee_id FROM BI_EMPLOYEE_UPDATE WHERE EFFECTIVE_DATE = to_date('30-Apr-2012','dd-mm-yy');
BEGIN
FOR employee in c_emp
LOOP
CURSOR
c_emp_update
IS
SELECT * FROM BI_EMPLOYEE_UPDATE WHERE employee_id = :employee.employee_id AND EFFECTIVE_DATE = to_date('30-Apr-2012','dd-mm-yy');
FOR emp_update in c_emp_update
LOOP
-- dbms_output.put_line(emp_update.column_name);
END LOOP;
END LOOP;
END;
目前这是我到目前为止所做的