Diferència entre revisions de la pàgina «P7-Uso de cursores explícitos»

De wikiserver
Dreceres ràpides: navegació, cerca
 
(Hi ha 2 revisions intermèdies del mateix usuari que no es mostren)
Línia 11: Línia 11:
 
     for a raise”. De lo contrario, aparece el mensaje “<<last_name>> Not Due for a raise”.
 
     for a raise”. De lo contrario, aparece el mensaje “<<last_name>> Not Due for a raise”.
 
   d) Pruebe el bloque PL/SQL para los siguientes casos:
 
   d) Pruebe el bloque PL/SQL para los siguientes casos:
     [[Fitxer:7_1.png|300px|casos]]
+
     [[Fitxer:7_1.png|500px|casos]]
  
 
'''2) A continuación, escriba un bloque PL/SQL que declare y utilice dos cursores: uno sin parámetro y otro con parámetro.
 
'''2) A continuación, escriba un bloque PL/SQL que declare y utilice dos cursores: uno sin parámetro y otro con parámetro.
Línia 40: Línia 40:
 
   f) Termine el primer bucle y cierre c_dept_cursor. A continuación, termine la sección ejecutable.
 
   f) Termine el primer bucle y cierre c_dept_cursor. A continuación, termine la sección ejecutable.
 
   g) Ejecute el script. La salida de ejemplo es la siguiente:
 
   g) Ejecute el script. La salida de ejemplo es la siguiente:
 
+
      [[Fitxer:7_2.png|500px|casos]]
    [[Fitxer:7_2.png|300px|casos]]
 

Revisió de 18:14, 24 nov 2014

1) Cree un bloque PL/SQL que realice las siguientes acciones:

 a) En la sección de declaraciones, declare e inicialice una variable llamada
    v_deptno de tipo NUMBER. Asigne un valor de identificador de departamento
    válido (consulte los valores en la tabla del paso d).
 b) Declare un cursor llamado c_emp_cursor, que recupere last_name,
    salary y manager_id de los empleados que trabajan en el departamento
    especificado en v_deptno.
 c) En la sección ejecutable, utilice el bucle FOR de cursor para realizar operaciones
    en los datos recuperados. Si el salario del empleado es menor que 5.000 y si el
    identificador de superior es 101 o 124, aparece el mensaje “<<last_name>> Due
    for a raise”. De lo contrario, aparece el mensaje “<<last_name>> Not Due for a raise”.
 d) Pruebe el bloque PL/SQL para los siguientes casos:
    casos

2) A continuación, escriba un bloque PL/SQL que declare y utilice dos cursores: uno sin parámetro y otro con parámetro.

El primer cursor recupera el número de departamento y el nombre del departamento de la tabla departments para todos los departamentos cuyos números de identificador sean menores que 100.

El segundo cursor recibe el número de departamento como parámetro y recupera los detalles de los empleados que trabajan en ese departamento y cuyo employee_id sea menor que 120.

 a) Declare un cursor c_dept_cursor para recuperar department_id y department_name para los
    departamentos con department_id menor que 100. Ordene por department_id.
 b) Declare otro cursor c_emp_cursor que tome el número de departamento como parámetro y
    recupere los siguientes datos de la tabla employees: last_name,job_id, hire_date y salary
    de los empleados que trabajan en ese departamento, con employee_id menor que 120.
 c) Declare las variables que contienen los valores recuperados de cada cursor.
    Utilice el atributo %TYPE mientras declara las variables.
 d) Abra c_dept_cursor, utilice un bucle simple y recupere los valores en las variables
    declaradas. Muestre el número y el nombre de departamento. Utilice el atributo de cursor
    adecuado para salir del bucle.
 e) Abra c_emp_cursor transfiriendo el número de departamento actual como parámetro.
    Inicie otro bucle y recupere los valores de emp_cursor en las variables e imprima todos
    los detalles recuperados de la tabla employees.
     Nota
      • Compruebe si c_emp_cursor ya está abierto antes de abrirlo.
      • Utilice el atributo de cursor adecuado para la condición de salida.
      • Cuando termine el bucle, imprima una línea después de haber mostrado los
        detalles de cada departamento y cierre c_emp_cursor.
 f) Termine el primer bucle y cierre c_dept_cursor. A continuación, termine la sección ejecutable.
 g) Ejecute el script. La salida de ejemplo es la siguiente:
      casos