Hace años que no toco nada de cursores ni plsql y estoy muy pegado en esto.
Me gustaría que me echarais una mano ya que no tengo cojones de solucionarlo.
Tengo el siguiente código y al ejecutarlo me muestra como error "la recuperacion exacta devuelve un numero mayor de filas que el solicitado)
Añadir un nuevo campo a la tabla "Jobs" llamado "salario_medio" de tipo number (6,0). Crear un procedimiento llamado "ejer2" que se encargue de rellenar toda la columna nueva, estableciendo el valor adecuado para cada Job, dicho valor será la media de los salarios de todos los empleados que tenga cada Job. (Obligatorio usar cursores)*/
Código SQL:
Ver original
CREATE OR REPLACE PROCEDURE "EJER2" IS /*param_idjob employees.job_id%TYPE;*/ v_media NUMBER; v_job VARCHAR(20); v_salario NUMBER; CURSOR EMP_CURSOR IS SELECT job_id, AVG(salary) FROM EMPLOYEES GROUP BY job_id; BEGIN OPEN EMP_CURSOR; FETCH EMP_CURSOR INTO v_job, v_media; WHILE EMP_CURSOR%FOUND LOOP IF v_media IS NOT NULL THEN SELECT AVG (salary) INTO v_salario FROM employees GROUP BY Job_id; UPDATE jobs SET salario_medio = v_salario WHERE job_id = v_job; END IF; FETCH EMP_CURSOR INTO v_job, v_media; END LOOP; CLOSE EMP_CURSOR; END; / DECLARE BEGIN /*param_idjob:= 'SA_MAN';*/ EJER2; END; /
Gracias por la ayuda.