2使用plsql代码块 根据入职年限和职位修改工资入职20年以上的经理加5000 入职30年以上的其他员工加2000员工KING工资不变
时间: 2024-02-22 15:58:57 浏览: 67
你可以使用以下PL/SQL代码块来修改emp表中的工资:
```
BEGIN
FOR emp_rec IN (SELECT * FROM emp)
LOOP
IF emp_rec.job = 'MANAGER' AND (SYSDATE - emp_rec.hiredate) >= 7305 THEN -- 20年的工作日天数为365*20+5=7305
UPDATE emp SET salary = emp_rec.salary + 5000 WHERE empno = emp_rec.empno;
ELSIF emp_rec.job != 'MANAGER' AND (SYSDATE - emp_rec.hiredate) >= 10957 THEN -- 30年的工作日天数为365*30+7=10957
UPDATE emp SET salary = emp_rec.salary + 2000 WHERE empno = emp_rec.empno AND emp_rec.ename != 'KING';
END IF;
END LOOP;
END;
```
这个PL/SQL代码块使用了FOR循环来迭代emp表中的每一行数据,并使用IF语句根据每个员工的职位和入职年限进行不同的修改。如果员工职位为经理且入职20年以上,工资会增加5000;如果员工职位不为经理且入职30年以上,工资会增加2000。这个代码块同时保留了员工KING的工资不变。
相关问题
使用plsql代码块 修改emp表中所有员工的工资工资大于3000的 加1000 ,工资等于3000的加2000,并且修改工资,工资小于3000的加3000并且修改工资
好的,以下是针对 Oracle 数据库的 PL/SQL 语句,实现你所描述的需求:
```
BEGIN
FOR e IN (SELECT * FROM emp WHERE sal > 0) LOOP
IF e.sal > 3000 THEN
UPDATE emp SET sal = e.sal + 1000 WHERE empno = e.empno;
ELSIF e.sal = 3000 THEN
UPDATE emp SET sal = e.sal + 2000 WHERE empno = e.empno;
ELSE
UPDATE emp SET sal = e.sal + 3000 WHERE empno = e.empno;
END IF;
END LOOP;
END;
```
这个 PL/SQL 代码块会遍历 emp 表中所有员工的工资,根据工资的大小分别加上不同的数值,并且修改工资。需要注意的是,这个代码块会对表中所有员工的工资进行修改,如果不希望修改所有员工的工资,可以在 WHERE 子句中添加适当的筛选条件。
1.使用plsql代码块 修改emp表中所有员工的工资 工资大于3000的 加1000 并且修改工资 工资等于3000的加2000并且修改工资 工资小于3000的加3000并且修改工资
你可以使用以下PL/SQL代码块来修改emp表中的工资:
```
BEGIN
FOR emp_rec IN (SELECT * FROM emp)
LOOP
IF emp_rec.salary > 3000 THEN
UPDATE emp SET salary = emp_rec.salary + 1000 WHERE empno = emp_rec.empno;
ELSIF emp_rec.salary = 3000 THEN
UPDATE emp SET salary = emp_rec.salary + 2000 WHERE empno = emp_rec.empno;
ELSE
UPDATE emp SET salary = emp_rec.salary + 3000 WHERE empno = emp_rec.empno;
END IF;
END LOOP;
END;
```
这个PL/SQL代码块使用了FOR循环来迭代emp表中的每一行数据,并使用IF语句根据每个员工的工资进行不同的修改。如果工资大于3000,工资会增加1000;如果工资等于3000,工资会增加2000;如果工资小于3000,工资会增加3000。这个代码块会同时修改所有的员工工资,符合你的要求。
阅读全文