基本的に私の更新では、SQLクエリの列名は次のように動的になります
update bi_employee set <this_is_dynamic_column> where emp_id = 12
以下は、これまでに作成したストアド プロシージャです。
CREATE OR replace PROCEDURE Sp_run_employee_updates
IS
CURSOR c_emp IS
SELECT *
FROM BI_EMPLOYEE_UPDATE
WHERE EFFECTIVE_DATE = To_date('30-Apr-2012', 'dd-mm-yy');
BEGIN
FOR employee_update IN c_emp LOOP
declare update_sql varchar2(225);
update_sql := 'UPDATE BI_EMPLOYEE SET '
|| employee_update.column_name
|| '= employee_update.new_value WHERE emp_id = '
|| employee_update.employee_id;
END LOOP;
END;
それは私に次のエラーを与えます
エラー (17,13): PLS-00103: 次のいずれかが予期されているときに、記号 "=" が検出されました:継続する。
エラー(22,5): PLS-00103: 次のいずれかを予期しているときに、記号「UPDATE」が検出されました: begin function pragma procedure subtype type current cursor delete exists before 続行するには、記号「begin」が「UPDATE」に置き換えられました。
エラー(31,6): PLS-00103: 記号「;」が見つかりました 次のいずれかが期待される場合: loop