私はoracleを初めて使っているので、oracleにストアド・プロシージャを書く方法についてはわかりません。現在、私はグーグルでSP上のネット上のいくつかの記事/ブログをグーグルで読んで読んでいます。私はそれについていくつかの考えを得ることを始めている。それでも、私はいくつかの質問に従っています。私がやろうとしています何oracleにストアドプロシージャを書き込む方法は?
され、
私は地域、部門、プロダクト、タイトルなど、EMP_IDとEmployeeテーブルを持っている
私はまた、(変更されたものを、EMP_IDでカラムをemp_updateテーブルを持っています)、old_value、new_value、およびdate。
emp_updateテーブルにはemp_id = 10の行があり、これは4月30日にアジアからイギリスに地域が変更されたことを示します。
4月30日に製品がAからBに変更されたことを示す同じempの別の行。
したがって、同じ従業員と同じ日付の複数のエントリ。
私はこの特定の日付にこのSpを実行して、これらの更新プログラムに社員テーブルを更新するcronジョブを実行しています。
4月30日に、従業員セット領域=英国、製品= Bを更新します(emp_id = 10の場合)。
その日のemp_updateテーブルからのすべての更新を含む従業員に対して1つの更新文を実行します。
だから基本的には、
は今日のアップデートでemp_updateから全従業員を取得します。 従業員の更新を繰り返し、1つの更新ステートメントでそれらを組み立てて、その更新クエリを実行します。各従業員に対して を繰り返します。
助けてください
EDIT 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;
現在、これは私がこれまで
どのような指示がありますか? – ashishjmeshram
1つの更新ステートメントが必要ですか?1つの更新ステートメントが必要ですか? –
Oracle docs:http://docs.oracleを参照してください。com/cd/E11882_01/appdev.112/e25519/toc.htmあなたはそこでいくつかの読書をしてから、その例のリストを見ることができます。 – tbone