SQL - Como pasar de for a while

   
Vista:

Como pasar de for a while

Publicado por Alejandro (7 intervenciones) el 01/06/2017 16:08:19
Hola gente, mi mision es pasar el FOR de este ejercicio a WHILE, Pero sinceramente no tengo idea como. Me serviría de ayuda que me echen una mano para yo poder tener una de como poder realizar este cambio. Espero puedan darme algunos tips, Saludos!



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
DECLARE
  CURSOR c_empleados IS
    SELECT employee_id, department_id, salary
      FROM employees;
v_nom_depto  VARCHAR2(35);
BEGIN
 FOR reg_empleados IN c_empleados LOOP
     BEGIN
          SELECT department_name
               INTO v_nom_depto
             FROM departments
          WHERE department_id = reg_empleados.department_id;
          DBMS_OUTPUT.PUT_LINE('El empleado ' || reg_empleados.employee_id || ' trabaja en el departamento'  || v_nom_depto);
          EXCEPTION
          WHEN NO_DATA_FOUND THEN
          DBMS_OUTPUT.PUT_LINE('El departamento del empleado ' || reg_empleados.employee_id || ' No existe');
          END;
 END LOOP;
END;



Pd: Cabe resaltar que estoy estudiando este lenguaje y no se como usar muy bien los bucles.
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 Isaias

Como pasar de for a while

Publicado por Isaias (933 intervenciones) el 01/06/2017 18:42:43
¿Que motor de base de datos estas ocupando?

La estructura del WHILE es muy simple

1
2
3
4
5
6
7
8
9
BEGIN
WHILE.........(condicion)
 BEGIN
 ...........CODIGO
 ...........CODIGO
 ...........CODIGO
 END
CONTINUE
END
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

Como pasar de for a while

Publicado por Ricardo (7 intervenciones) el 01/06/2017 18:50:52
Hola! tengo esto, me falta filtrar los empleados que tengan departamentos. No se si tenga que hacer otro cursor
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
/* ACTUAL */
DECLARE
  CURSOR c_empleados IS   -- SE CREA CURSOR
    SELECT employee_id, department_id -- DATOS QUE SE RECUPERAN
      FROM employees; -- TABLA PROVENIENTE DE LOS DATO
v_dep_nm departments.department_name%type; -- VARIABLE PARA ALMACENAR NOMBRE DEL DEPARTAMENTO
v_emp_id employees.employee_id%TYPE; -- VARIABLE PARA ALMACENAR ID DEL EMPLEADO
v_id_depto departments.department_name%type; -- VARIABLE AUX
BEGIN
  OPEN c_empleados;
  FETCH c_empleados INTO v_dep_nm,v_emp_id;
  WHILE c_empleados%FOUND LOOP
 
 
    dbms_output.put_line(v_dep_nm);
 
 
 
    FETCH c_empleados INTO v_dep_nm,v_emp_id;
  END LOOP;
  CLOSE c_empleados;
END;
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
Imágen de perfil de Isaias

Como pasar de for a while

Publicado por Isaias (933 intervenciones) el 01/06/2017 19:47:31
Soy del grupo ANTI-CURSORES

Te pregunte: ¿Que motor de base de datos ocupas?
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

Como pasar de for a while

Publicado por Ricardo (7 intervenciones) el 01/06/2017 19:58:42
Chuta sorry, ocupo Oracle
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
Imágen de perfil de Isaias

Como pasar de for a while

Publicado por Isaias (933 intervenciones) el 01/06/2017 20:03:03
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