Oracle - Problema con cursores

 
Vista:
sin imagen de perfil
Val: 1
Ha aumentado su posición en 43 puestos en Oracle (en relación al último mes)
Gráfica de Oracle

Problema con cursores

Publicado por TheCastor (1 intervención) el 10/02/2018 15:52:55
Buenas tardes,

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)*/
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.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de gilman
Val: 101
Bronce
Ha mantenido su posición en Oracle (en relación al último mes)
Gráfica de Oracle

Problema con cursores

Publicado por gilman (36 intervenciones) el 11/02/2018 08:41:12
la sentencia
1
SELECT AVG (salary) INTO v_salario FROM employees GROUP BY Job_id;
devuelve más de un registro en concreto tantos como Job_id diferentes halla, debería devolver un único registro
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar