Инструкция процедуры PL / SQL игнорируется - PullRequest
3 голосов
/ 15 января 2012

Я делаю учебник с веб-сайта http://www.plsqltutorial.com/plsql-procedure/. Я запустил код на вершине:

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;

, но получил ошибку:

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;

Я проверили стол сотрудников там.В чем проблема и как ее исправить?

Ответы [ 2 ]

3 голосов
/ 15 января 2012

ГДЕ employee_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;

Глядя на статью, я вижу, что вы создали опечатку при создании функции, объявление функции согласно статье:

 CREATE OR REPLACE PROCEDURE adjust_salary(
    in_employee_id IN EMPLOYEES.EMPLOYEE_ID%TYPE,

Таким образом, если вы измените свой код на вышеуказанный, никаких изменений в заявлении на обновление не требуется.

2 голосов
/ 15 января 2012

Параметр in_employee, но вы используете in_employee_id в своем обновлении.Изменить на:

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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...