【问题标题】: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;
/