【问题标题】:ORACLE APEX COMPILATION FAILED ERRORORACLE APEX 编译失败错误
【发布时间】:2016-05-24 06:28:08
【问题描述】:
create or replace procedure "PROC_UPDATE_SALARY"
    (p_ename IN VARCHAR2, p_salary_increase IN VARCHAR2)
 is       

 begin
 v_new_salary   lab01_sample_emp.sal TYPE;

       UPDATE LAB01_SAMPLE_EMP
          SET SAL = SAL + p_salary_increase
        WHERE ENAME = p_ename
    RETURNING SAL INTO v_new_salary;

 commit;

 dbms_output.put_line('INCREASED SALARY FOR: ' || p_ename ||
     ' TO THE NEW AMOUNT OF: $ ' || to_char(v_new_salary));

 end;

【问题讨论】:

    标签: oracle plsql oracle-apex


    【解决方案1】:

    所有变量都需要在开始部分之前声明。

    我还建议将第二个参数更改为数字。这将使您的声明更清晰,并避免 Oracle 在执行时必须在更新语句中进行隐式转换。

    create or replace procedure PROC_UPDATE_SALARY
       -- Use number data type to move data validation to the 
       -- procedure call and avoid implicit conversion.
       -- (p_ename IN VARCHAR2, p_salary_increase IN VARCHAR2)
       (p_ename IN VARCHAR2, p_salary_increase IN NUMBER)
    is       
      -- Declaration section
      v_new_salary   lab01_sample_emp.sal%TYPE;
    begin
      -- Execution section
      UPDATE LAB01_SAMPLE_EMP
         SET SAL = SAL + p_salary_increase 
       WHERE ENAME = p_ename
      RETURNING SAL INTO v_new_salary;
    
      commit;
    
      dbms_output.put_line('INCREASED SALARY FOR: ' 
                           || p_ename 
                           || ' TO THE NEW AMOUNT OF: $ ' 
                           || to_char(v_new_salary));
    
    end;
    /
    

    【讨论】:

      猜你喜欢
      • 2020-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-13
      • 1970-01-01
      • 1970-01-01
      • 2014-06-01
      相关资源
      最近更新 更多