declare  sal  number(7,2)  := 500 ;
begin 
  execute immediate 'update  emp  set sal = sal+'||sal ;
end ;

解决方案 »

  1.   

    declare  sal  number(7,2)  := 500 ;
    sal1 number(7,2) :=sal+sal;
    begin 
    update  emp1  set sal = sal1 ;
    end ;
      

  2.   

    declare  sal  number(7,2)  := 500 ;
    str varchar2(100);
    begin
    str:='update emp1 set sal='||sal||'+'||sal;
    execute immediate str;
    end;
      

  3.   

    如果这样写的话,Oracle总是认为sal是字段名,因为在oracle里,字段名优先级高于变量名
      

  4.   

    这种情况下,字段名称优先。这么写:<<main>>
    declare 
      sal  number(7,2)  := 500 ;
    begin 
    update  emp  set sal = sal + main.sal ;
    end ;
      

  5.   

    CodeMagic(ErrorDetector):
    老兄忙什么去了,好久不见了这招果然灵,学一招