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- Declaració de variables)
(T3- Solución : Escritura de sentencias ejecutables)
 
(Hi ha 8 revisions intermèdies del mateix usuari que no es mostren)
Línia 1: Línia 1:
==T4- Sentencies executables ==
+
==T3- Solución : Escritura de sentencias ejecutables==
  
EXERCICI 1
+
En esta práctica, examinará y escribirá sentencias ejecutables.
  
OBSERVA EL SEGÜENT BLOC PL/SQL I DETERMINA ELS VALORS DE LES VARIABLES SEGÜENTS D'ACORD AMB LES REGLES D'ÀMBIT
+
[[Imatge:m2uf3_ese_1.png |600px|center| Escritura sentencias ejecutables]]
  
DECLARE
 
  
v_weight NUMBER(3):=600;
+
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.
  
v_message VARCHAR2(255):='Product 10012';
+
:a) El valor de v_weight en la posición 1 es:
  
BEGIN
+
::'''2'''
 +
::'''El tipo de dato es NUMBER.'''
  
    DECLARE
+
:b) El valor de v_new_locn en la posición 1 es:
  
        v_weight NUMBER(3):=1;
+
::'''Western Europe'''
 +
::'''El tipo de dato es VARCHAR2.'''
  
        v_message VARCHAR2(255):='Product 11001';
+
:c) El valor de v_weight en la posición 2 es:
  
        v_new_locn VARCHAR2(50):='Europe';
+
::'''601'''
 +
::'''El tipo de dato es NUMBER.'''
  
      BEGIN
+
:d) El valor de v_message en la posición 2 es:
  
        v_weight:= v_weight+1;
+
::'''Product 10012 is in stock'''
 +
::'''El tipo de dato es VARCHAR2.'''
  
        v_new_locn:='Western'|| v_new_locn;
+
:e) El valor de v_new_locn en la posición 2 es:
  
      END;
+
::'''No válido porque v_new_locn no es visible fuera del subbloque'''
  
  v_weight:= v_weight+1;
+
[[Imatge:M2UF3_ESE_2.png |600px|center| Escriptura de Sentències Executables]]
  
  v_message:=v_message||'is in stock';
+
'''2)''' En el bloc anterior, determina el valor i el tipus de dada en cada un dels següents cassos:
  
  v_new_locn:='Western'|| v_new_locn;
+
:a) Valor de v_customer en el bloc anidat:
  
END;
 
  
 +
::'''201'''
 +
::'''El tipo de dato es NUMBER.'''
  
a) El valor de v_weight en el subbloc és:
+
:b) Valor de v_name en el bloc anidat:
  
b) El valor de v_new_locn en el subbloc és:
+
::'''Unisports'''
 +
::'''El tipo de dato es VARCHAR2.'''
  
c) El valor de v_weight en el bloc principal és:
+
:c) Valor de v_credit_rating en el bloc anidat:
  
d) El valor de v_message en el bloc principal és:
+
::'''GOOD'''
 +
::'''El tipo de dato es VARCHAR2.'''
  
e) El valor de v_new_locn en el bloc principal es
+
:d) Valor de v_customer en el bloc principal:
  
EXERCICI 2
+
::'''Womansport'''
 +
::'''El tipo de dato es VARCHAR2.'''
  
SUPOSEM QUE INCLOEM UN SUBBLOC EN UN BLOC TAL COM ES MOSTRA TOT SEGUIT. DETERMINA ELS VALORS EN ELS CASOS SEGÜENTS
+
:e) Valor de v_name en el bloc principal:
  
DECLARE
+
'''No valid. No és visible en aquest punt.'''
  
  v_customer    VARCHAR2(50):='Womansport';
+
:f) Valor de v_credit_rating en el bloc principal:
  
  v_credit_rating    VARCHAR2(50):='excellent';
+
::'''GOOD'''
 +
::'''El tipo de dato es VARCHAR2.'''
  
BEGIN
 
  
      DECLARE
+
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:
  
            v_customer  NUMBER(7):=201;
+
: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>
  
            v_name        VARCHAR2(25):='unisports';
+
: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>
 +
  /*:b_basic_percent:=45;
 +
  :b_pf_percent:=12;*/
 +
</pre>
  
      BEGIN
+
:c) En la sección de declaraciones:
  
      END;
+
::1. Declare e inicialice dos variables temporales para sustituir las variables de enlace comentadas.
  
END;
+
::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.
 +
<pre>
 +
  DECLARE
 +
    v_basic_percent NUMBER:=45;
 +
    v_pf_percent NUMBER:=12;
 +
    v_fname VARCHAR2(15);
 +
    v_emp_sal NUMBER(10);
 +
</pre>
  
a) El valor de v_customer en el subbloc és:
+
: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>
  
b) El valor de v_name en el subbloc és:
+
: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>
  
c) El valor de v_credit_rating en el subbloc és:
+
: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>
  
d) El valor de v_customer en el bloc principal és:
+
:g) Ejecute y guarde el script como lab_03_03_soln.sql. La salida de ejemplo es la siguiente:
  
e) El valor de v_name en el bloc principal es
+
[[Imatge:m2uf3_ese_2.png |300px|center| Escritura sentencias ejecutables]]
 
 
f) El valor de v_credit_rating en el bloc principal és:
 
EXERCICI 3
 
 
 
CREA I EXECUTA UN BLOC PL/SQL ANOMENAT “T3E3.sql” QUE ACCEPTI DOS NUMEROS PER MITJÀ DE VARIABLES SQL*PLUS. S'HA DE DIVIDIR EL PRIMER NÚMERO PEL SEGON I DESPRÉS AFEGIR EL SEGON AL RESULTAT. EL RESULTAT S'HA D'ESCRIURE EN UNA VARIABLE PL/SQL I S'HA D'IMPRIMIR EN PANTALLA AMB UNA VARIABLE SQL*PLUS.
 
 
 
EXERCICI 4
 
 
 
GENEREU UN BLOC PL/SQL QUE CALCULI LA COMPENSACIÓ TOTAL PER UN ANY. EL SALARI ANUAL I EL PERCENTATGE ANUAL DE BONIFICACIONS ES PASARAN AL BLOC PL/SQL A TRAVÉS DE VARIABLES DE SUBSTITUCIÓ SQL*PLUS I L'IMPORT DE BONIFICACIÓ HAURÀ DE SER CONVERTIT EN NUMERO ENTER A DECIMAL (per exemple 15 a 0,15). SI EL SALARI ES NUL ASIGNEU-LI ZERO ABANS DE CALCULAR LA COMPENSACIÓ TOTAL. UTILITZEU LA FUNCIÓ NVL PER A GESTIONAR ELS VALORS NULS
 

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