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
(T3- Solución : Escritura de sentencias ejecutables)
 
(Hi ha 14 revisions intermèdies del mateix usuari que no es mostren)
Línia 1: Línia 1:
*'''Exercici 1'''
+
==T3- Solución : Escritura de sentencias ejecutables==
  
:Avalua les següents declaracions de variables determinant quines no son correctes (donen error), explica perquè.
+
En esta práctica, examinará y escribirá sentencias ejecutables.
  
::a) DECLARE v_id NUMBER(4);
+
[[Imatge:m2uf3_ese_1.png |600px|center| Escritura sentencias ejecutables]]
  
    Correcte.
 
  
        b) DECLARE v_x, v_y,v_z VARCHAR2(10);
+
1) Evalúe el bloque PL/SQL anterior y determine tanto el tipo de dato como el valor de cada una de las siguientes variables, según las reglas de los ámbitos.
  
    Incorrecte, perquè només es permet un identificador per declaració.
+
:a) El valor de v_weight en la posición 1 es:
  
        c) DECLARE v_data_naixament DATE NOT NULL;
+
::'''2'''
 +
::'''El tipo de dato es NUMBER.'''
  
    Incorrecte, perquè una variable NOT NULL ha d'inicialitzar-se.
+
:b) El valor de v_new_locn en la posición 1 es:
  
        d) DECLARE v_en_stock BOOLEAN :=1
+
::'''Western Europe'''
 +
::'''El tipo de dato es VARCHAR2.'''
  
    Incorrecte, perquè 1 no és una expressió booleana.
+
:c) El valor de v_weight en la posición 2 es:
  
    Exercici 2
+
::'''601'''
 +
::'''El tipo de dato es NUMBER.'''
  
    Determina el tipus de dades de les expressions resultants en les següents assignacions
+
:d) El valor de v_message en la posición 2 es:
  
        a) v_dies_que_falten := v_date - SYSDATE;
+
::'''Product 10012 is in stock'''
 +
::'''El tipo de dato es VARCHAR2.'''
  
    Number 
+
:e) El valor de v_new_locn en la posición 2 es:
  
        b) v_sender := USER || ':' || TO_CHAR(v_deptno);
+
::'''No válido porque v_new_locn no es visible fuera del subbloque'''
  
    Caràcter
+
[[Imatge:M2UF3_ESE_2.png |600px|center| Escriptura de Sentències Executables]]
  
        c) v_sum := $100,000+$250,000
+
'''2)''' En el bloc anterior, determina el valor i el tipus de dada en cada un dels següents cassos:
  
    Incorrecte. No es poden convertir símbols especials de VARCHAR2 a NUMBER
+
:a) Valor de v_customer en el bloc anidat:
  
        d) v_bandera := TRUE
 
  
    Booelan
+
::'''201'''
 +
::'''El tipo de dato es NUMBER.'''
  
        e) v_n1 := v_n2 > (2*v_n3);
+
:b) Valor de v_name en el bloc anidat:
  
    Boolean
+
::'''Unisports'''
 +
::'''El tipo de dato es VARCHAR2.'''
  
        f) v_valor := NULL;
+
:c) Valor de v_credit_rating en el bloc anidat:
  
    Qualsevol tipus d'escalar.
+
::'''GOOD'''
 +
::'''El tipo de dato es VARCHAR2.'''
  
    Exercici 3
+
:d) Valor de v_customer en el bloc principal:
  
    Crea un bloc anònim per imprimir la frase “Benvingut a PL/SQL”
+
::'''Womansport'''
 +
::'''El tipo de dato es VARCHAR2.'''
  
VARIABLE g_message VARCHAR2(30)
+
:e) Valor de v_name en el bloc principal:
BEGIN
 
  :g_message := 'My PL/SQL Block Works';
 
END;
 
/
 
PRINT g_message
 
  
G_MESSAGE
+
'''No valid. No és visible en aquest punt.'''
---------------------------------------------------------
 
My PL/SQL Block Works   
 
  
    Exercici 4
+
:f) Valor de v_credit_rating en el bloc principal:
  
    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.
+
::'''GOOD'''
 +
::'''El tipo de dato es VARCHAR2.'''
  
            V_CHAR Character (variable length)
 
  
            V_Number
+
3) Utilice la misma sesión que utilizó para ejecutar las prácticas de la lección titulada “Declaración de Variables PL/SQL”. Si ha abierto una nueva sesión, ejecute lab_02_05_soln.sql. A continuación, edite lab_02_05_soln.sql de la siguiente forma:
  
        Assigna els següents valors a les variables:
+
:a) Con la sintaxis de comentarios de una sola línea, comente las líneas que crean las variables de enlace y active SERVEROUTPUT.
 +
<pre>
 +
  -- VARIABLE b_basic_percent NUMBER
 +
  -- VARIABLE b_pf_percent NUMBER
 +
  SET SERVEROUTPUT ON
 +
</pre>
  
            Variable Value
+
:b) Con los comentarios de varias líneas, comente en la sección ejecutable las líneas que asignan valores a las variables de enlace.
            --------- ---------------------------------------------
+
<pre>
            V_CHAR The literal '42 is the answer'
+
  /*:b_basic_percent:=45;
            V_NUM The first two characters form V_CHAR
+
  :b_pf_percent:=12;*/
 +
</pre>
  
VARIABLE g_char VARCHAR2(30)
+
:c) En la sección de declaraciones:
VARIABLE g_num NUMBER
+
 
DECLARE
+
::1. Declare e inicialice dos variables temporales para sustituir las variables de enlace comentadas.
  v_char VARCHAR2(30);
+
 
  v_num NUMBER;
+
::2. Declare dos variables adicionales: v_fname del tipo VARCHAR2 y tamaño 15, y v_emp_sal del tipo NUMBER y tamaño 10.
BEGIN
+
<pre>
  v_char := '42 is the answer';
+
  DECLARE
  v_num := TO_NUMBER(SUBSTR(v_char,1,2));
+
    v_basic_percent NUMBER:=45;
  :g_char := v_char;
+
    v_pf_percent NUMBER:=12;
  :g_num := v_num;
+
    v_fname VARCHAR2(15);
END;
+
    v_emp_sal NUMBER(10);
/
+
</pre>
PRINT g_char
+
 
PRINT g_num
+
:d) Incluya la siguiente sentencia SQL en la sección ejecutable:
 +
<pre>
 +
  SELECT first_name, salary INTO v_fname, v_emp_sal
 +
  FROM employees WHERE employee_id=110;
 +
</pre>
 +
 
 +
:e) Cambie la línea que imprime “Hello World” para que imprima “Hello” y el nombre. A continuación, comente las líneas que muestran las fechas e imprimen las
 +
variables de enlace.
 +
<pre>
 +
  DBMS_OUTPUT.PUT_LINE(' Hello '|| v_fname);
 +
  /*DBMS_OUTPUT.PUT_LINE('TODAY IS : '|| v_today);
 +
  DBMS_OUTPUT.PUT_LINE('TOMORROW IS : ' || v_tomorrow);*/
 +
  ...
 +
  ...
 +
  /
 +
  --PRINT b_basic_percent
 +
  --PRINT b_basic_percent
 +
</pre>
 +
 
 +
:f) Calcule la aportación del empleado al fondo de previsión (PF). PF es el 12% del salario básico, y el salario básico es el 45% del salario. Utilice
 +
las variables locales para el cálculo. Intente utilizar sólo una expresión para calcular el valor de PF. Imprima el salario del empleado y su aportación a PF.
 +
<pre>
 +
    DBMS_OUTPUT.PUT_LINE('YOUR SALARY IS : '||v_emp_sal);
 +
    DBMS_OUTPUT.PUT_LINE('YOUR CONTRIBUTION TOWARDS PF:'||v_emp_sal*v_basic_percent/100*v_pf_percent/100);
 +
  END;
 +
</pre>
 +
 
 +
:g) Ejecute y guarde el script como lab_03_03_soln.sql. La salida de ejemplo es la siguiente:
 +
 
 +
[[Imatge:m2uf3_ese_2.png |300px|center| Escritura sentencias ejecutables]]

Revisió de 17:04, 22 feb 2019

T3- Solución : Escritura de sentencias ejecutables

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

Escritura sentencias ejecutables


1) Evalúe el bloque PL/SQL anterior y determine tanto el tipo de dato como el valor de cada una de las siguientes variables, según las reglas de los ámbitos.

a) El valor de v_weight en la posición 1 es:
2
El tipo de dato es NUMBER.
b) El valor de v_new_locn en la posición 1 es:
Western Europe
El tipo de dato es VARCHAR2.
c) El valor de v_weight en la posición 2 es:
601
El tipo de dato es NUMBER.
d) El valor de v_message en la posición 2 es:
Product 10012 is in stock
El tipo de dato es VARCHAR2.
e) El valor de v_new_locn en la posición 2 es:
No válido porque v_new_locn no es visible fuera del subbloque
Escriptura de Sentències Executables

2) En el bloc anterior, determina el valor i el tipus de dada en cada un dels següents cassos:

a) Valor de v_customer en el bloc anidat:


201
El tipo de dato es NUMBER.
b) Valor de v_name en el bloc anidat:
Unisports
El tipo de dato es VARCHAR2.
c) Valor de v_credit_rating en el bloc anidat:
GOOD
El tipo de dato es VARCHAR2.
d) Valor de v_customer en el bloc principal:
Womansport
El tipo de dato es VARCHAR2.
e) Valor de v_name en el bloc principal:

No valid. No és visible en aquest punt.

f) Valor de v_credit_rating en el bloc principal:
GOOD
El tipo de dato es VARCHAR2.


3) Utilice la misma sesión que utilizó para ejecutar las prácticas de la lección titulada “Declaración de Variables PL/SQL”. Si ha abierto una nueva sesión, ejecute lab_02_05_soln.sql. A continuación, edite lab_02_05_soln.sql de la siguiente forma:

a) Con la sintaxis de comentarios de una sola línea, comente las líneas que crean las variables de enlace y active SERVEROUTPUT.
   -- VARIABLE b_basic_percent NUMBER
   -- VARIABLE b_pf_percent NUMBER
   SET SERVEROUTPUT ON
b) Con los comentarios de varias líneas, comente en la sección ejecutable las líneas que asignan valores a las variables de enlace.
   /*:b_basic_percent:=45;
   :b_pf_percent:=12;*/
c) En la sección de declaraciones:
1. Declare e inicialice dos variables temporales para sustituir las variables de enlace comentadas.
2. Declare dos variables adicionales: v_fname del tipo VARCHAR2 y tamaño 15, y v_emp_sal del tipo NUMBER y tamaño 10.
   DECLARE
     v_basic_percent NUMBER:=45;
     v_pf_percent NUMBER:=12;
     v_fname VARCHAR2(15);
     v_emp_sal NUMBER(10);
d) Incluya la siguiente sentencia SQL en la sección ejecutable:
   SELECT first_name, salary INTO v_fname, v_emp_sal
   FROM employees WHERE employee_id=110;
e) Cambie la línea que imprime “Hello World” para que imprima “Hello” y el nombre. A continuación, comente las líneas que muestran las fechas e imprimen las

variables de enlace.

   DBMS_OUTPUT.PUT_LINE(' Hello '|| v_fname);
   /*DBMS_OUTPUT.PUT_LINE('TODAY IS : '|| v_today);
   DBMS_OUTPUT.PUT_LINE('TOMORROW IS : ' || v_tomorrow);*/
   ...
   ...
   /
   --PRINT b_basic_percent
   --PRINT b_basic_percent
f) Calcule la aportación del empleado al fondo de previsión (PF). PF es el 12% del salario básico, y el salario básico es el 45% del salario. Utilice

las variables locales para el cálculo. Intente utilizar sólo una expresión para calcular el valor de PF. Imprima el salario del empleado y su aportación a PF.

     DBMS_OUTPUT.PUT_LINE('YOUR SALARY IS : '||v_emp_sal);
     DBMS_OUTPUT.PUT_LINE('YOUR CONTRIBUTION TOWARDS PF:'||v_emp_sal*v_basic_percent/100*v_pf_percent/100);
   END;
g) Ejecute y guarde el script como lab_03_03_soln.sql. La salida de ejemplo es la siguiente:
Escritura sentencias ejecutables