This shows you the differences between two versions of the page.
kurs:procedure_salary_diff_simple_record [2010/05/18 11:15] 127.0.0.1 external edit |
kurs:procedure_salary_diff_simple_record [2014/09/10 21:22] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | <code> | ||
- | PROCEDURE SALARY_DIFF | ||
- | IS | ||
- | cursor bonus_salary is | ||
- | SELECT | ||
- | first_name, | ||
- | last_name, | ||
- | salary | ||
- | FROM bonus | ||
- | order by salary desc; | ||
- | type bonus_salary_rec_type is record ( | ||
- | first_name bonus.last_name%TYPE, | ||
- | last_name bonus.last_name%TYPE, | ||
- | salary bonus.salary%TYPE); | ||
- | |||
- | bonus_salary_rec bonus_salary_rec_type; | ||
- | | ||
- | v_diff bonus.salary%TYPE; | ||
- | v_old bonus.salary%TYPE; | ||
- | |||
- | BEGIN | ||
- | open bonus_salary; | ||
- | select max(salary) into v_old from bonus; | ||
- | loop | ||
- | fetch bonus_salary into bonus_salary_rec; | ||
- | exit when bonus_salary%notfound; | ||
- | v_diff := bonus_salary_rec.salary - v_old; | ||
- | -- dbms_output.put_line(v_last_name||' '||v_salary||' '||v_diff); | ||
- | v_old := bonus_salary_rec.salary; | ||
- | update bonus set difference = v_diff where | ||
- | first_name = bonus_salary_rec.first_name and | ||
- | last_name = bonus_salary_rec.last_name; | ||
- | |||
- | end loop; | ||
- | close bonus_salary; | ||
- | |||
- | END; -- Procedure | ||
- | </code> |