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

De wikiserver
Dreceres ràpides: navegació, cerca
(T4- Sentencies executables)
(T3- Declaració de variables)
Línia 1: Línia 1:
==T3- Declaració de variables ==
+
==T3- Solución : Escritura de sentencias ejecutables==
  
*'''Exercici 1'''
+
En esta práctica, examinará y escribirá sentencias ejecutables.
  
:Avalua les següents declaracions de variables determinant quines no son correctes (donen error), explica perquè.
+
[[Imatge:m2uf3_ese_1.png |300px|center| Escritura sentencias ejecutables]]
  
::a) DECLARE v_id NUMBER(4);
 
  
    Correcte.
 
  
::b) DECLARE v_x, v_y,v_z VARCHAR2(10);
+
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.
  
    Incorrecte, perquè només es permet un identificador per declaració.
+
:a) Declare una variable v_max_deptno de tipo NUMBER en la sección de declaraciones.
  
::c) DECLARE v_data_naixament DATE NOT NULL;
+
<pre>
 +
DECLARE
  
    Incorrecte, perquè una variable NOT NULL ha d'inicialitzar-se.
+
  v_max_deptno NUMBER;
 
+
</pre>
::d) DECLARE v_en_stock BOOLEAN :=1
 
 
 
    Incorrecte, perquè 1 no és una expressió booleana.
 
 
 
*'''Exercici 2'''   
 
 
 
:Determina el tipus de dades de les expressions resultants en les següents assignacions
 
  
::a) v_dies_que_falten := v_date - SYSDATE;
+
: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.
 
 
    Number 
 
 
 
::b) v_sender := USER || ':' || TO_CHAR(v_deptno);
 
 
 
    Caràcter
 
 
 
::c) v_sum := $100,000+$250,000
 
 
 
    Incorrecte. No es poden convertir símbols especials de VARCHAR2 a NUMBER
 
 
 
::d) v_bandera := TRUE
 
 
 
    Booelan
 
 
 
::e) v_n1 := v_n2 > (2*v_n3);
 
 
 
    Boolean
 
 
 
::f) v_valor := NULL;
 
 
 
    Qualsevol tipus d'escalar.
 
 
 
 
 
*'''Exercici 3'''
 
 
 
:Crea un bloc anònim per imprimir la frase “Benvingut a PL/SQL”
 
  
 
<pre>
 
<pre>
VARIABLE g_message VARCHAR2(30)
 
 
BEGIN
 
BEGIN
  :g_message := 'My PL/SQL Block Works';
 
END;
 
/
 
PRINT g_message
 
  
G_MESSAGE
+
  SELECT MAX(department_id) INTO v_max_deptno FROM departments;
---------------------------------------------------------
 
My PL/SQL Block Works   
 
 
</pre>
 
</pre>
  
*'''Exercici 4'''
+
:c) Muestre v_max_deptno y termine el bloque ejecutable.
 
 
:Crea un bloc que declari dues variables. Assigneu el valor d'aquestes variables PL/SQL a variables SQL*PLUS i imprimeix el valor d'aquestes dues variables per pantalla. Guarda el bloc PL/SQL en un arxiu anomenat p2q4.spl.  
 
 
 
::::        V_CHAR Character (variable length)
 
 
 
::::        V_Number
 
  
::::    Assigna els següents valors a les variables:
 
 
::::        Variable Value
 
::::        --------- ---------------------------------------------
 
::::        V_CHAR The literal '42 is the answer'
 
::::        V_NUM The first two characters form V_CHAR
 
 
<pre>
 
<pre>
VARIABLE g_char VARCHAR2(30)
+
  DBMS_OUTPUT.PUT_LINE('The maximum department_id is : ' || v_max_deptno);
VARIABLE g_num NUMBER
 
DECLARE
 
  v_char VARCHAR2(30);
 
  v_num NUMBER;
 
BEGIN
 
  v_char := '42 is the answer';
 
  v_num := TO_NUMBER(SUBSTR(v_char,1,2));
 
  :g_char := v_char;
 
  :g_num := v_num;
 
 
END;
 
END;
/
 
PRINT g_char
 
PRINT g_num
 
 
</pre>
 
</pre>
 +
 +
:d) Ejecute y guarde el script como lab_04_01_soln.sql. La salida de ejemplo es la siguiente:

Revisió del 20:46, 9 març 2017

T3- Solución : Escritura de sentencias ejecutables

En esta práctica, examinará y escribirá sentencias ejecutables.

Escritura sentencias ejecutables


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: