带保存点的pl / sql过程

时间:2015-06-19 11:14:34

标签: sql plsql

我有一个包含列的表员工:id,name,department,salary。 我想创建一个程序,增加特定部门所有员工的工资,如果工资低于500则运行程序,否则返回保存点。 我不知道怎么写异常

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

2 个答案:

答案 0 :(得分:2)

也许您需要检查自己的观点,因为您可以添加另一个WHERE子句,以便仅更新小于或等于500的工资,例如:

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

有了这个,我认为你不需要SAVEPOINT,但是在这里找到如何使用它:SAVEPOINT

希望这有帮助!!。

答案 1 :(得分: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;