2015-08-21 61 views
1

我想編寫一個PL/SQL代碼塊,用於在更改前後顯示兩位員工的員工編號和薪水。PL/SQL顯示工資變更前後的工資

請告知

cursor cur is select employees.employee_ID, employees.salary 
from employees 
where employees.employee_ID=&employee_ID 
AND employees.salary= employees.salary 

sal number; 
emp_ID number(10); 

introduction clob; 
begin 
open cur; 
loop 
fetch cur into sal,emp_ID; 
exit when cur>=2; 

introduction := ' Display the Employees_ID and Salary before and after change.'; 
dbms_output.put_line(introduction); 
DBMS_OUTPUT.PUT_LINE('employee_id =' || emp_ID); 
DBMS_OUTPUT.PUT_LINE('Salary =' || Sal); 

end loop; 
close cur; 
END; 
+0

這似乎與你在[你在前面的問題](http://stackoverflow.com/q/32147986/266304)中所做的非常相似。你有什麼嘗試,你有什麼問題適應? –

+0

嘗試過光標,但沒有很好地與我合作 – Chaz

+0

請修改您的問題以顯示您嘗試過的以及爲什麼它不起作用。如果你有錯誤,然後顯示這些,如果它給出了錯誤的結果顯示你有什麼和你的預期。我們不能從頭開始爲你寫全部內容。 –

回答

1

您需要在員工表中的新列,並用它來基本工資存儲它。

您還需要Salary列的插入和更新觸發器來將當前值存儲在剛纔添加的新列中。

現在您只需使用員工表中的簡單選擇來完成這項工作。

因爲我不知道你的表架構我不能爲你提供一個pl/sql代碼,但如果你需要一個代碼告訴我,並給我寫存儲員工和工資欄的表名。

希望它可以幫助 伊曼

+0

我認爲OP只是想顯示前後值,而不是存儲在表中。 –

+0

我已更新與我的嘗試的問題..請指教...我需要顯示工資之前更改它,並在更改後 – Chaz

+0

亞歷克斯,我相信查茲必須存儲他們,否則沒有多少他可以做的,我們正在談論數據庫,邏輯恰好在數據庫層實施了其他應用程序邏輯。 – Zich

0

這可以通過觸發器簡單地完成。

create or replace trigger printSal 
    before update or insert on employees 
    for each row 

declare 

begin 
    dbms_output.put_line('employee_id =' || emp_ID || ' New Sal=' ||:new.sal|| ' Old Sal=' || :old.sal); 
    -- or you can insert these values into another table. 
end printSal; 
相關問題