哈哈,你UPDATE的是emp,不是etotal,而最后显示的却还是etotal,改成emp就行,不用COMMIT。declare etotal emp.empno%type; v_sal emp.sal%type; eadd number; begin select empno into etotal from emp where ename='&name'; if etotal.job='CLERK' then eadd:=500; elsif etotal.job='SALESMAN' then eadd:=1000; elsif etotal.job='ANALYST' then eadd:=1500; end if; update emp set sal=sal+eadd where ename='&name';
select sal into v_sal from emp where ename='&name'; dbms_output.put_line('result:'||v_sal); end;
select * into etotal from emp where ename='&name'; 唯一吗? update emp set sal=sal+eadd where empno=etotal.empno; 有问题. dbms_output.put_line('result:'||emp.sal);
try: declare etotal emp.empno%type; v_sal emp.sal%type; eadd number; begin select empno into etotal from emp where ename='&name';
if etotal.job='CLERK' then eadd:=500; elsif etotal.job='SALESMAN' then eadd:=1000; elsif etotal.job='ANALYST' then eadd:=1500; end if; update emp set sal=sal+eadd where ename='&name' return sal into v_sal; dbms_output.put_line('result:'¦¦v_sal); end;
etotal emp.empno%type;
v_sal emp.sal%type;
eadd number;
begin
select empno into etotal from emp where ename='&name'; if etotal.job='CLERK' then
eadd:=500;
elsif etotal.job='SALESMAN' then
eadd:=1000;
elsif etotal.job='ANALYST' then
eadd:=1500;
end if;
update emp set sal=sal+eadd where ename='&name';
select sal into v_sal from emp where ename='&name';
dbms_output.put_line('result:'||v_sal);
end;
======================
没怎么看懂这句话,看了你的程序,觉得比如原来sal是100,现在加了500
所以应该显示600,是这样么?
唯一吗?
update emp set sal=sal+eadd where empno=etotal.empno;
有问题.
dbms_output.put_line('result:'||emp.sal);
______________________________________________
这样它会报错.
======================
没怎么看懂这句话,看了你的程序,觉得比如原来sal是100,现在加了500
所以应该显示600,是这样么?
declare
etotal emp.empno%type;
v_sal emp.sal%type;
eadd number;
begin
select empno into etotal from emp where ename='&name';
if etotal.job='CLERK' then
eadd:=500;
elsif etotal.job='SALESMAN' then
eadd:=1000;
elsif etotal.job='ANALYST' then
eadd:=1500;
end if;
update emp set sal=sal+eadd where ename='&name' return sal into v_sal;
dbms_output.put_line('result:'¦¦v_sal);
end;