Как я могу реорганизовать эти строки кода без использования CURSOR
? Я новичок в PL/SQL. Любая помощь будет оценена по достоинству. СпасибоКод refactor без курсора PL/SQL
DECLARE
CURSOR c_emps IS
SELECT employee_id
FROM bonus;
v_region HR.REGIONS.region_name%TYPE;
v_salary hr.employees.salary%TYPE;
BEGIN
FOR r_emps IN c_emps LOOP
SELECT reg.region_name, emp.salary
INTO v_region, v_salary
FROM hr.employees emp,
hr.departments dep,
hr.Locations loc,
hr.countries cot,
hr.regions reg
WHERE emp.department_id = dep.department_id AND
dep.location_id = loc.location_id AND
loc.country_id = cot.country_id AND
cot.region_id = reg.region_id AND
employee_id = r_emps.employee_id;
IF v_region = 'Europe' THEN
UPDATE bonus
SET bonus = bonus + (v_salary * .01)
WHERE employee_id = r_emps.employee_id;
ELSE
UPDATE bonus
SET bonus = v_salary * .01
WHERE employee_id = r_emps.employee_id;
END IF;
END LOOP;
COMMIT;
END;
/
Удаление курсора и использование реляционной логики - хорошая практика +1 – jean
Вы можете сделать это в одном операторе обновления, используя оператор case. Нет необходимости в процедурном, поэтапном подходе. Почему бы вам не попробовать написать инструкцию для обновления, и если вы застряли, отредактируйте свой вопрос с тем, что вам удалось достичь, и мы поможем вам дальше. – Boneist
стр. вам может показаться полезным прочитать [this] (http://www.orchestrapit.co.uk/?p=171) – Boneist