私はOracleを初めて使用するため、Oracleでストアドプロシージャを作成する方法がわかりません。現在、私はオラクルのSPでネット上のいくつかの記事/ブログをグーグルで読んでいます。私はそれについていくつかのアイデアを得始めています。それでも、私はいくつかの質問をフォローしています。
私がやろうとしているのは、
emp_id、Region、Division、Product、TitleなどのEmployeeテーブルがあります。
また、emp_id、column(変更内容)、old_value、new_value、およびdateを含むemp_updateテーブルもあります。
たとえば、emp_updateテーブルにはemp_id = 10の行があり、4月30日に地域がアジアから英国に変更されたことを示します。
同じ従業員の別の行は、4月30日に製品がAからBに変更されたことを示しています。
したがって、同じ従業員と同じ日付の複数のエントリ。
その特定の日に、このSpを実行して従業員テーブルをこれらの更新に更新するcronジョブを実行しています。
たとえば、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;
現在、これは私がこれまでに行ったことです