我是oracle的新手,所以不确定如何在oracle中编写存储过程。目前我正在谷歌搜索和阅读在甲骨文SP上的一些文章/博客。我开始对它有所了解。即使这样,我也有几个问题。
我想做的是,
我有一个包含emp_id,Region,Division,Product,Title等的Employee表。
我还有emp_update表,其中包含emp_id,列(更改内容),old_value,new_value和date。
e.g。 emp_update表将有一行for emp_id = 10,表示该区域于4月30日从亚洲更改为英国。
同一个emp的另一行表示产品于4月30日从A变为B.
因此,同一员工和同一日期的多个条目。
现在在那个特定的日期,我正在运行一个cron作业,它将运行此Sp来更新employee表到这些更新。
e.g。在4月30日,更新员工设置区域= UK,产品= 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;
目前这是我到目前为止所做的事情
答案 0 :(得分:0)
这个问题似乎与存储过程相关,而不是创建动态查询。基本上,你想要这个:
emp_update
中的记录,按employee_id
UPDATE EMP SET <previous string here> WHERE EMPLOYEE_ID = <emp_id>
构建SQL。