Diferència entre revisions de la pàgina «M2 - Bases de dades / Exercicis UF3: Llenguatges SQL / Solucions PL-SQL T4»

De wikiserver
Dreceres ràpides: navegació, cerca
(T4- Sentencies executables)
(T4- Solución : Ineracción con Oracle Server)
Línia 44: Línia 44:
 
</pre>
 
</pre>
  
b) Ya ha recuperado el número de departamento superior actual de la tabla departments. Agréguele 10 y asigne el resultado a v_dept_id.
+
:b) Ya ha recuperado el número de departamento superior actual de la tabla departments. Agréguele 10 y asigne el resultado a v_dept_id.
  
 
<pre>
 
<pre>
Línia 50: Línia 50:
 
</pre>
 
</pre>
  
c) Incluya una sentencia INSERT para insertar datos en las columnas department_name, department_id y location_id de la tabla departments.
+
:c) Incluya una sentencia INSERT para insertar datos en las columnas department_name, department_id y location_id de la tabla departments.
  
 
Utilice valores en dept_name y dept_id para department_name y department_id, respectivamente, y utilice NULL para location_id.
 
Utilice valores en dept_name y dept_id para department_name y department_id, respectivamente, y utilice NULL para location_id.
Línia 60: Línia 60:
 
</pre>
 
</pre>
  
d) Utilice el atributo SQL SQL%ROWCOUNT para mostrar el número de filas que se ven afectadas.
+
:d) Utilice el atributo SQL SQL%ROWCOUNT para mostrar el número de filas que se ven afectadas.
  
 
<pre>
 
<pre>
Línia 67: Línia 67:
 
</pre>
 
</pre>
  
e) Ejecute una sentencia SELECT para comprobar si se ha insertado el nuevo departamento. Termine el bloque PL/SQL con “/” e incluya la sentencia SELECT en el script.
+
:e) Ejecute una sentencia SELECT para comprobar si se ha insertado el nuevo departamento. Termine el bloque PL/SQL con “/” e incluya la sentencia SELECT en el script.
  
 
<pre>
 
<pre>
Línia 76: Línia 76:
 
</pre>
 
</pre>
  
f) Ejecute y guarde el script como lab_04_02_soln.sql. La salida de ejemplo es la siguiente:
+
:f) Ejecute y guarde el script como lab_04_02_soln.sql. La salida de ejemplo es la siguiente:
  
 
[[Imatge:m2uf3_ios_2.png |400px|center| Interacción Oracle Server]]
 
[[Imatge:m2uf3_ios_2.png |400px|center| Interacción Oracle Server]]
 +
 +
 +
3) En el paso 2, defina location_id en NULL. Cree un bloque PL/SQL que actualice location_id a 3000 para el nuevo departamento.
 +
 +
'''Nota''': si ha terminado correctamente el paso 2, continúe con el paso 3a. De lo contrario, ejecute primero el script de solución /soln/sol_04_02.sql.
 +
 +
:a) Inicie el bloque ejecutable con la palabra clave BEGIN. Incluya la sentencia UPDATE para definir location_id en 3000 para el nuevo departamento (dept_id =280).
 +
 +
<pre>
 +
BEGIN
 +
 +
  UPDATE departments SET location_id=3000 WHERE department_id=280;
 +
</pre>
 +
 +
:b) Termine el bloque ejecutable con la palabra clave END. Termine el bloque PL/SQL con “/” e incluya una sentencia SELECT para mostrar el departamento que ha actualizado.
 +
 +
<pre>
 +
END;
 +
/
 +
SELECT * FROM departments WHERE department_id=280;
 +
</pre>
 +
c) Incluya una sentencia DELETE para suprimir el departamento agregado.
 +
 +
<pre>
 +
DELETE FROM departments WHERE department_id=280;
 +
</pre>
 +
 +
:d) Ejecute y guarde el script como lab_04_03_soln.sql. La salida de ejemplo es la siguiente:
 +
 +
[[Imatge:m2uf3_ios_3.png |400px|center| Interacción Oracle Server]]

Revisió del 20:39, 9 març 2017

T4- Solución : Ineracción con Oracle Server

1) Cree un bloque PL/SQL que seleccione el identificador de departamento superior en la tabla departments y lo almacene en la variable v_max_deptno. Muestre el identificador de departamento superior.

a) Declare una variable v_max_deptno de tipo NUMBER en la sección de declaraciones.
DECLARE

   v_max_deptno NUMBER;
b) Inicie la sección ejecutable con la palabra clave BEGIN e incluya una sentencia SELECT para recuperar el valor máximo de department_id de la tabla departments.
BEGIN

   SELECT MAX(department_id) INTO v_max_deptno FROM departments;
c) Muestre v_max_deptno y termine el bloque ejecutable.
   DBMS_OUTPUT.PUT_LINE('The maximum department_id is : ' || v_max_deptno);
END;
d) Ejecute y guarde el script como lab_04_01_soln.sql. La salida de ejemplo es la siguiente:
Interacción Oracle Server

2) Modifique el bloque PL/SQL creado en el paso 1 para insertar un nuevo departamento en la tabla departments.

a) Cargue el script lab_04_01_soln.sql. Declare dos variables:
v_dept_name de tipo departments.department_name y
v_dept_id de tipo NUMBER

Asigne ‘Education’ a v_dept_name en la sección de declaraciones.

   v_dept_name departments.department_name%TYPE:= 'Education';
   v_dept_id NUMBER;
b) Ya ha recuperado el número de departamento superior actual de la tabla departments. Agréguele 10 y asigne el resultado a v_dept_id.
   v_dept_id := 10 + v_max_deptno;
c) Incluya una sentencia INSERT para insertar datos en las columnas department_name, department_id y location_id de la tabla departments.

Utilice valores en dept_name y dept_id para department_name y department_id, respectivamente, y utilice NULL para location_id.

...
   INSERT INTO departments (department_id, department_name, location_id)
   VALUES (v_dept_id, v_dept_name, NULL);
d) Utilice el atributo SQL SQL%ROWCOUNT para mostrar el número de filas que se ven afectadas.
   DBMS_OUTPUT.PUT_LINE (' SQL%ROWCOUNT gives ' || SQL%ROWCOUNT);
   ...
e) Ejecute una sentencia SELECT para comprobar si se ha insertado el nuevo departamento. Termine el bloque PL/SQL con “/” e incluya la sentencia SELECT en el script.
...
/
   SELECT * FROM departments
   WHERE department_id= 280;
f) Ejecute y guarde el script como lab_04_02_soln.sql. La salida de ejemplo es la siguiente:
Interacción Oracle Server


3) En el paso 2, defina location_id en NULL. Cree un bloque PL/SQL que actualice location_id a 3000 para el nuevo departamento.

Nota: si ha terminado correctamente el paso 2, continúe con el paso 3a. De lo contrario, ejecute primero el script de solución /soln/sol_04_02.sql.

a) Inicie el bloque ejecutable con la palabra clave BEGIN. Incluya la sentencia UPDATE para definir location_id en 3000 para el nuevo departamento (dept_id =280).
BEGIN

   UPDATE departments SET location_id=3000 WHERE department_id=280;
b) Termine el bloque ejecutable con la palabra clave END. Termine el bloque PL/SQL con “/” e incluya una sentencia SELECT para mostrar el departamento que ha actualizado.
END;
/
SELECT * FROM departments WHERE department_id=280;

c) Incluya una sentencia DELETE para suprimir el departamento agregado.

DELETE FROM departments WHERE department_id=280;
d) Ejecute y guarde el script como lab_04_03_soln.sql. La salida de ejemplo es la siguiente:
Interacción Oracle Server