Me estoy haciendo el tutorial de la página web http://www.plsqltutorial.com/plsql-procedure/. He de ejecutar el código en el ápice:

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;

pero tengo error:

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;

He comprobado y tabla de empleados es de allí. ¿Cuál es el problema y cómo solucionarlo?

InformationsquelleAutor aretai | 2012-01-15

2 Comentarios

  1. 3

    DONDE id_empleado = in_employee_id;

    in_employee_id no se ha declarado, tampoco es un parámetro. La definición de la función dice que el parámetro es in_employee por lo que su bloque de código debe ser

    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;

    Mirando el artículo, veo que has cometido un error al crear la función, la declaración de la función como por el artículo es

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

    Por tanto, si cambia el código para el de arriba, no cambios son necesarios para la instrucción update.

    • sí que es correcto gracias
    • por favor, marca la respuesta como «aceptado», haciendo clic en la casilla de verificación verde
    • y también, si usted tiene la respuesta, podría dar a tu otra pregunta muy similar a este: stackoverflow.com/q/8871447/452614
  2. 2

    El parámetro es in_employee pero estamos usando in_employee_id en su actualización. Cambiar a:

    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;

Dejar respuesta

Please enter your comment!
Please enter your name here