create or replace procedure pro_testif(pro_empNo emp.empno%type) is
  2  v_empName emp.ename%type;
  3  begin
  4        selelct ename into v_empName from emp where empno=pro_empNo;
  5        if v_empName='MILLER'
  6        then
  7           update emp set sal=sal+200 empno=pro_empNo;
  8        elsif v_empName='FORD'
  9        then
 10           update emp set sal=sal+100 empno=pro_empNo;
 11        else
 12           update emp set sal=sal+10 where empno=pro_empNo;
 13        end if;
 14  end;
 15  /
 
Warning: Procedure created with compilation errors

解决方案 »

  1.   

    update emp set sal=sal+200 where empno=pro_empNo;
      

  2.   

    update emp set sal=sal+100 where empno=pro_empNo;
      

  3.   

    create or replace procedure pro_testif(pro_empNo emp.empno%type) is
    v_empName emp.ename%type;
    begin
    select ename into v_empName from emp where empno=pro_empNo;
    if v_empName='MILLER'
    then
    update emp set sal=sal+200 where empno=pro_empNo;
    elsif v_empName='FORD'
    then
    update emp set sal=sal+100 where empno=pro_empNo;
    else
    update emp set sal=sal+10 where empno=pro_empNo;
    end if;
    end;
    /
      

  4.   

    -- 简化如下:
    create or replace procedure pro_testif(pro_empNo emp.empno%type) is
    v_empName emp.ename%type;
    begin
      execute immediate 'update emp set sal=sal+(decode(ename,''MILLER'',200,''FORD'',100,10)) where empno=:pro_empNo' using pro_empNo;
    end;
    /
      

  5.   

      update emp set sal=sal+200 empno=pro_empNo; 这个有 where 关键字 忘了打上去 其他几个也有
      update emp set sal=sal+200 where empno=pro_empNo;