PL/SQL 过程 - SQL 语句忽略错误

are*_*tai 5 oracle plsql stored-procedures

我正在从网站http://www.plsqltutorial.com/plsql-procedure/做教程。我已经在 apex 上运行了代码:

CREATE OR REPLACE PROCEDURE adjust_salary(
    in_employee IN EMPLOYEES.EMPLOYEE_ID%TYPE,
    in_percent IN NUMBER
) IS
BEGIN
    UPDATE EMPLOYEES
    SET salary = salary + salary * in_percent / 100
    WHERE employee_id = in_employee_id;
END;
Run Code Online (Sandbox Code Playgroud)

但我有错误:

Error at line 6: PL/SQL: SQL Statement ignored

4. ) IS
5. BEGIN
6.  UPDATE EMPLOYEES
7.  SET salary = salary + salary * in_percent / 100
8.  WHERE employee_id = in_employee_id;
Run Code Online (Sandbox Code Playgroud)

我已经检查过,表员工在那里。有什么问题以及如何解决?

Sat*_*hat 6

WHERE 雇员_id = in_employee_id;

in_employee_id没有声明,也不是参数。函数定义说参数是in_employee所以你的代码块应该是

CREATE OR REPLACE PROCEDURE adjust_salary(
    in_employee IN EMPLOYEES.EMPLOYEE_ID%TYPE,
    in_percent IN NUMBER
) IS
BEGIN
    UPDATE EMPLOYEES
    SET salary = salary + salary * in_percent / 100
    WHERE employee_id = in_employee;
END;
Run Code Online (Sandbox Code Playgroud)

查看这篇文章,我发现您在创建函数时犯了一个拼写错误,文章中的函数声明是

 CREATE OR REPLACE PROCEDURE adjust_salary(
    in_employee_id IN EMPLOYEES.EMPLOYEE_ID%TYPE,
Run Code Online (Sandbox Code Playgroud)

因此,如果将代码更改为上述内容,则无需更改更新语句。