PLS-00103: Se encontró el símbolo “ACCEPT”:
La tarea consiste en obtener el salario máximo para los empleados que ocupan el mismo puesto en un departamento. El puesto y el número de departamento son parámetros de la función. Aquí está el código:
CREATE OR REPLACE FUNCTION getMaxSalary
(jobId IN employees.job_id%TYPE,
dep_id IN employees.department_id%TYPE
)
RETURN NUMBER IS
result NUMBER := 0;
BEGIN
SELECT MAX(salary) INTO result
FROM employees
WHERE job_id = jobId AND department_id = dep_id;
IF result IS NULL THEN
RAISE_APPLICATION_ERROR(-20201, 'Este no es un departamento válido');
END IF;
RETURN result;
END;
ACCEPT x CHAR PROMPT 'Por favor ingrese el ID del trabajo:';
DECLARE
jobId employees.job_id%TYPE;
maxSalary NUMBER;
BEGIN
jobId:= '&x';
maxSalary:= getMaxSalary(jobId);
DBMS_OUTPUT.PUT_LINE('El salario máximo para el ID de trabajo: '|| maxSalary);
END;
davy.ai
¿Qué hace esta función?
Esta función crea una función almacenada en Oracle que toma dos parámetros:
jobId
ydep_id
, que representan el ID del trabajo y el ID del departamento respectivamente. La función devuelve el salario máximo de todos los empleados que tienen el mismo ID de trabajo y se encuentran en el departamento dado.Si el resultado es nulo, se genera un error de aplicación con el mensaje “Este no es un departamento válido”.
Luego, la función solicita al usuario que ingrese un ID de trabajo, lo asigna a la variable
jobId
y llama a la funcióngetMaxSalary
pasando el parámetrojobId
.El resultado se almacena en la variable
maxSalary
y se muestra utilizando la funciónDBMS_OUTPUT.PUT_LINE
.