17,382
社区成员




代码有错求大神改改
declare
cursor cur_emp
is select empno,ename,sal,deptno
from emp;
BEGIN
for emp_record in cur_emp
loop
if emp_record.deptno='SALESMAN' then
update emp set sal =emp_record .sal where deptno=emp_record.deptno;
dbms.output.put_line('员工编号:'||emp_record.empno||'员工姓名'||emp_record.ename||',所在部门编号:'||emp_record.deptno||,'原工资'||emp_record.sal||',调整后工资:'||emp_record.sal);
else if emp_record.deptno='ANALYST' then
update emp set sal =emp_record .sal where deptno=emp_record.deptno;
dbms.output.put_line('员工编号:'||emp_record.empno||'员工姓名'||emp_record.ename||',所在部门编号:'||emp_record.deptno||,'原工资'||emp_record.sal||',调整后工资:'||emp_record.sal);
else if emp_record.deptno='MANAGER' then
update emp set sal =emp_record .sal where deptno=emp_record.deptno;
dbms.output.put_line('员工编号:'||emp_record.empno||'员工姓名'||emp_record.ename||',所在部门编号:'||emp_record.deptno||,'原工资'||emp_record.sal||',调整后工资:'||emp_record.sal);
else if emp_record.deptno='CLERK' then
update emp set sal =emp_record .sal where deptno=emp_record.deptno;
dbms.output.put_line('员工编号:'||emp_record.empno||'员工姓名'||emp_record.ename||',所在部门编号:'||emp_record.deptno||,'原工资'||emp_record.sal||',调整后工资:'||emp_record.sal);
else if emp_record.deptno='PRESIDENT' then
update emp set sal =emp_record .sal where deptno=emp_record.deptno;
dbms.output.put_line('员工编号:'||emp_record.empno||'员工姓名'||emp_record.ename||',所在部门编号:'||emp_record.deptno||,'原工资'||emp_record.sal||',调整后工资:'||emp_record.sal);
end if;
end loop;
end;
ORA-06550: 第 10 行, 第 145 列:
PLS-00103: 出现符号 ","在需要下列之一时:
( - + case mod
new null <an identifier>
<a double-quoted delimited-identifier> <a bind variable>
continue avg count current max min prior sql stddev sum
variance execute forall merge time timestamp interval date
<a string literal with character set specification>
<a number> <a single-quoted SQL string> pipe
<一个带有字符集说明的可带引号的字符串文字>
<一个可带引号的 SQL 字符串> purge
符号 "null"
ORA-06550: 第 13 行, 第 145 列:
PLS-00103: 出现符号 ","在需要下列之一时:
( - + case mod
new null <an identifier>
<a double-quoted delimited-identifier> <a bind variable>
continue avg count current max min prior sql stddev sum
variance execut
ORA-06550: 第 16 行, 第 145 列:
PLS-00103: 出现符号 ","在需要下列之一时:
( - + case mod
new null <an identifier>
<a double-quoted delimited-identifier> <a bind variable>
continue avg count current max min prior sql stddev sum
variance execut
ORA-06550: 第 19 行, 第 145 列:
PLS-00103: 出现符号 ","在需要下列之一时:
( - + case mod
new null <an identifier>
<a double-quoted delimited-identifier> <a bind variable>
continue avg count current max min prior sql stddev sum
variance execut
ORA-06550: 第 22 行, 第 143 列:
PLS-00103: 出现符号 ","在需要下列之一时:
( - + case mod
new null <an identifier>
<a double-quoted delimited-identifier> <a bind variable>
continue avg count current max min prior sql stddev sum
variance execut
ORA-06550: 第 24 行, 第 10 列:
PLS-00103: 出现符号 "LOOP"在需要下列之一时:
if
在scott用户模式下创建匿名PL/SQL程序块,按照以下加薪比例(加薪规则:职位SALESMAN和ANALYST的员工,上调15%;职位MANAGER的员工,上调20%;职位CLERK的员工,上调25%;职位PRESIDENT的员工,上调30%)对scott模式emp表中的员工工资进行加薪,并将加薪前后的数据在控制台输出,输出格式为“员工编号:%empno%,员工姓名:%empname%,所在部门编号:%deptno%,原工资:%oldsalary%,调整后工资:%newsalary%”
set serveroutput on;
declare
cursor cur_emp
is select empno,ename,sal,deptno
from emp;
BEGIN
for emp_record in cur_emp
loop
if emp_record.deptno='SALESMAN' then
update emp set sal =emp_record .sal1.15 where deptno=emp_record.deptno;
dbms.output.put_line(‘员工编号:’||emp_record.empno||'员工姓名'||emp_record.ename||',所在部门编号:'||emp_record.deptno||,'原工资'||emp_record.sal||',调整后工资:'||emp_record.sal1.15);
elseif emp_record.deptno='ANALYST' then
update emp set sal =emp_record .sal1.15 where deptno=emp_record.deptno;
dbms.output.put_line(‘员工编号:’||emp_record.empno||'员工姓名'||emp_record.ename||',所在部门编号:'||emp_record.deptno||,'原工资'||emp_record.sal||',调整后工资:'||emp_record.sal1.15);
else if emp_record.deptno='MANAGER' then
update emp set sal =emp_record .sal1.2 where deptno=emp_record.deptno;
dbms.output.put_line(‘员工编号:’||emp_record.empno||'员工姓名'||emp_record.ename||',所在部门编号:'||emp_record.deptno||,'原工资'||emp_record.sal||',调整后工资:'||emp_record.sal1.2);
elseif emp_record.deptno='CLERK' then
update emp set sal =emp_record .sal1.25 where deptno=emp_record.deptno;
dbms.output.put_line(‘员工编号:’||emp_record.empno||'员工姓名'||emp_record.ename||',所在部门编号:'||emp_record.deptno||,'原工资'||emp_record.sal||',调整后工资:'||emp_record.sal1.25);
elseif emp_record.deptno='PRESIDENT' then
update emp set sal =emp_record .sal1.3 where deptno=emp_record.deptno;
dbms.output.put_line(‘员工编号:’||emp_record.empno||'员工姓名'||emp_record.ename||',所在部门编号:'||emp_record.deptno||,'原工资'||emp_record.sal||',调整后工资:'||emp_record.sal1.3);
end if;
end loop;
end;
/