首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >提高emp薪资的PL/SQL_procedure存在错误

提高emp薪资的PL/SQL_procedure存在错误
EN

Stack Overflow用户
提问于 2017-04-01 04:41:47
回答 1查看 208关注 0票数 0

问题是要写一组代码,对于那些薪水低于1100的员工,把他们的工资提高50。

我的代码如下所示,但有错误:

在第2行出现错误:当需要下列内容之一时遇到符号"RAISE_SALARY“::=。(@%;立即符号";在"RAISE_SALARY“之前插入继续。

代码语言:javascript
复制
CREATE OR REPLACE procedure raise_salary
AS
    CURSOR c1 IS    
        select ename, sal from emp
        where sal <1100
        order by sal ASC;   
BEGIN
    FOR emp_rec IN c1 
    LOOP
        UPDATE emp
        SET sal = sal + 50;
    END LOOP;
END;
/

begin
    execute raise_salary;
end;
/
EN

回答 1

Stack Overflow用户

发布于 2017-04-03 20:37:23

进一步搜索,我想您会发现这个过程并没有更新工资150,但是实际上更新了50次--相当于光标中返回的行数的50次。在本例中,为您验证的任何人提供3行(SO3* 50 = 150)。此外,它还更新了所有薪资,而不仅仅是光标中的薪资。

update语句不包含WHERE子句,因此更新表中的每一行。

此外,一个简单的update语句将完成所需的任务:

更新set = sal + 50,其中sal < 1100;

养成一种习惯,根据设置而不是单个行来思考。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43152922

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档