数据库的问题 请大家帮帮忙 帮我给下面的pl sql加上注释 每一行都要 谢谢

setserveroutputoncreatetablemsg(raisenumnumber(6),sumsalnumber);declarecursorclissele... set serveroutput on
create table msg(raisenum number(6),sumsal number);
declare
cursor cl is select empno,sal from emp
order by sal for update of sal;
emp_num number:=0;
s_sal number;
e_sal number;
e_eno number(4);
Begin
open cl;
select sum(sal) into s_sal from emp;
while s_sal<500000 loop
fetch cl into e_eno,e_sal;
exit when cl%notfound;
update emp set sal=sal*1.1
where current of cl;
s_sal:=s_sal+e_sal*0.1;
emp_num:=emp_num+1;
end loop;
close cl;
insert into msg values(emp_num,s_sal);
commit;
end;
展开
 我来答
x403879785
2012-11-04 · TA获得超过3839个赞
知道大有可为答主
回答量:1299
采纳率:100%
帮助的人:1226万
展开全部
set serveroutput on; //打开服务器的输出显示
create table msg(raisenum number(6),sumsal number); //创建msg表、包含数字类型字段raisenum和sumsal
declare //定义变量关键字,这里是一段匿名块
cursor cl is select empno,sal from emp
order by sal for update of sal; //定义一个游标cl、用来查询修改emp表
emp_num number:=0; //定义数字型变量 emp_num 、并赋初值0
s_sal number;
e_sal number;
e_eno number(4); //定义对应类型变量
Begin //匿名块主体开始
open cl; //打开上面定义的游标cl
select sum(sal) into s_sal from emp; //查询emp表sal的总和、存入s_sal变量
while s_sal<500000 loop //当s_sal(就是上面求出的sal总和)的值小于500000时,开始循环
fetch cl into e_eno,e_sal; //提取游标cl的数据、存入变量e_eno、e_sal
exit when cl%notfound; //提取完退出
update emp set sal=sal*1.1
where current of cl;
//修改emp表条件为游标里sal的字段值为原值的1.1倍
s_sal:=s_sal+e_sal*0.1; // 设置s_sal的值为s_sal和十分之一e_sql值的和
emp_num:=emp_num+1; //设置emp_num的值+1
end loop; //退出循环
close cl; //关闭游标
insert into msg values(emp_num,s_sal); //msg表插入数据、值为emp_num,s_sal的值
commit; //提交操作
end; //结束匿名块
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式