declare
v_empno employee.empno%type;
v_start number;
v_getdate number;
v_year number;
cursor emp_commcus IS
select empno,to_number(to_char(hiredate,'yyyy')) from employee;
begin
open emp_commcus;
loop
fetch emp_commcus into v_empno,v_start;
select to_number(to_char(sysdate,'yyyy')) into v_getdate from dual;
v_year:=v_getdate-v_start;
if v_getdate>=6 then
update employee set comm=comm+2000 where empno=v_empno; --该怎么写
else
update employee set comm=comm+1500 where empno=v_empno; -- 怎么写
end if;
end loop;
close emp_commcus;
end;
declare
v_start number;
v_getdate number;
v_year number;
cursor c IS
select empno,to_number(to_char(hiredate,'yyyy')) from employee for update;
v_row c%rowtype;
v_empno employee.empno%type;
begin
open c;
for v_row in c loop
fetch c into v_empno,v_start;
select to_number(to_char(sysdate,'yyyy')) into v_getdate from dual;
v_year:=v_getdate-v_start;
if v_getdate>=6 then
update employee set comm=comm+2000 where current of c;
dbms_output.put_line(v_empno);
else
update employee set comm=comm+2000 where current of c;
dbms_output.put_line(v_empno);
end if;
end loop;
close c;
end;
我个人又改善了一次然后跟我报错说“已打开了游标”
你上边这个写法报了什么错误呢?