简体   繁体   English

带保存点的pl / sql过程

[英]pl/sql procedure with savepoint

I have a table employee with columns: id, name, department, salary. 我有一个表雇员,其列为:id,姓名,部门,薪水。 I want to create a procedure which increase salary for all employees in a specific department and run procedure if salary is less than 500, otherwise return to savepoint. 我想创建一个程序来增加特定部门中所有雇员的工资,如果工资少于500,则运行该程序,否则返回保存点。 I don't know how to write the exception 我不知道怎么写异常

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

maybe you need to review your point of view, because you can add another WHERE clause in order to update only those salaries who are less than or equal to 500, eg: 也许您需要审视您的观点,因为您可以添加另一个WHERE子句以仅更新那些小于或等于500的薪水,例如:

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

With this I think you don't need a SAVEPOINT, however find here how to use it: SAVEPOINT 有了这个,我认为您不需要SAVEPOINT,但是请在这里找到如何使用它: SAVEPOINT

Hope this help!!. 希望对您有所帮助!

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;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM