2015-06-19 30 views
0

SQL過程我有列的表格員工:ID,姓名,部門,薪水。 我想創造出增加所有員工的工資在一個特定的部門和運行過程,如果工資低於500的程序,否則返回到保存點。 我不知道怎麼寫異常PL /與保存點

CREATE PROCEDURE `procedure1` (IN dep1 INT(11), IN sal1 INT(11)) 
BEGIN 
    SAVEPOINT point1; 
    UPDATE employee SET salary=salary+sal1 
    WHERE department=dep1; 
    EXCEPTION 
    WHEN salary>500 THEN 
    ROLLBACK TO point1; 
END 
+1

你是什麼意思,「運行程序?」調用另一個過程而不是更新?這不是一個例外。這是不正確的pl/sql。 – OldProgrammer

+0

我要檢查,如果工資少於500然後進行更新 –

+1

您已經標記與PL/SQL(Oracle)的問題,但你已經顯示的語法似乎預示着MySQL的(那些可怕的反引號,INT(11)) - 所以你在用什麼? Oracle或MySQL? –

回答

0
CREATE OR REPLACE PROCEDURE procedure1 (dep1 IN NUMBER, sal1 IN NUMBER) 
BEGIN 

    UPDATE employee SET salary=salary+sal1 
    WHERE department= dep1 and 
     salary <= 500; 
    COMMIT; 
END; 
+0

不應該這是'薪金<= 500'? –

+0

哎呀,是的。謝謝。 – OldProgrammer

2

也許你需要檢查你的觀點,因爲你可以爲了只更新那些誰是工資增加一個WHERE子句小於或等於500,如:

UPDATE employee SET salary=salary+sal1 
    WHERE department=dep1 
    AND salary <= 500; 

有了這個,我覺得你並不需要保存點,但是在這裏找到如何使用它:SAVEPOINT

希望這會他LP !!。

+0

謝謝,我會試試這個 –