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
(Es crea la pàgina amb «==T4- Sentencies executables == EXERCICI 1 OBSERVA EL SEGÜENT BLOC PL/SQL I DETERMINA ELS VALORS DE LES VARIABLES SEGÜENTS D'ACORD AMB LES REGLES D'ÀMBIT DECLARE v…».)
 
(T4- Sentencies executables)
Línia 1: Línia 1:
 
==T4- Sentencies executables ==
 
==T4- Sentencies executables ==
  
EXERCICI 1
+
*'''Exercici 1'''
  
OBSERVA EL SEGÜENT BLOC PL/SQL I DETERMINA ELS VALORS DE LES VARIABLES SEGÜENTS D'ACORD AMB LES REGLES D'ÀMBIT
+
:Observa el següent bloc PL/SQL i determina els valors de les variables següents d'acord amb les regles d'àmbit
  
DECLARE
+
::DECLARE
  
v_weight NUMBER(3):=600;
+
::v_weight NUMBER(3):=600;
  
v_message VARCHAR2(255):='Product 10012';
+
::v_message VARCHAR2(255):='Product 10012';
  
BEGIN
+
::BEGIN
  
    DECLARE
+
::::DECLARE
  
        v_weight NUMBER(3):=1;
+
:::::v_weight NUMBER(3):=1;
  
        v_message VARCHAR2(255):='Product 11001';
+
:::::v_message VARCHAR2(255):='Product 11001';
  
        v_new_locn VARCHAR2(50):='Europe';
+
:::::v_new_locn VARCHAR2(50):='Europe';
  
      BEGIN
+
:::::BEGIN
  
        v_weight:= v_weight+1;
+
:::::::v_weight:= v_weight+1;
  
        v_new_locn:='Western'|| v_new_locn;
+
:::::::v_new_locn:='Western'|| v_new_locn;
  
      END;
+
:::::END;
  
  v_weight:= v_weight+1;
+
:::::v_weight:= v_weight+1;
  
  v_message:=v_message||'is in stock';
+
:::::v_message:=v_message||'is in stock';
  
  v_new_locn:='Western'|| v_new_locn;
+
:::::v_new_locn:='Western'|| v_new_locn;
  
END;
+
::END;
  
  
a) El valor de v_weight en el subbloc és:
+
:a) El valor de v_weight en el subbloc és:
  
b) El valor de v_new_locn en el subbloc és:
+
:b) El valor de v_new_locn en el subbloc és:
  
c) El valor de v_weight en el bloc principal és:
+
:c) El valor de v_weight en el bloc principal és:
  
d) El valor de v_message en el bloc principal és:
+
:d) El valor de v_message en el bloc principal és:
  
e) El valor de v_new_locn en el bloc principal es
+
:e) El valor de v_new_locn en el bloc principal es
  
EXERCICI 2
+
*'''Exercici 2'''
  
SUPOSEM QUE INCLOEM UN SUBBLOC EN UN BLOC TAL COM ES MOSTRA TOT SEGUIT. DETERMINA ELS VALORS EN ELS CASOS SEGÜENTS
+
Suposem que incloem un subbloc en un bloc tal com es mostra tot seguit. Determina els valors en els casos següents:
  
DECLARE
+
::DECLARE
  
  v_customer    VARCHAR2(50):='Womansport';
+
::::v_customer    VARCHAR2(50):='Womansport';
  
  v_credit_rating    VARCHAR2(50):='excellent';
+
::::v_credit_rating    VARCHAR2(50):='excellent';
  
BEGIN
+
::BEGIN
  
      DECLARE
+
::::DECLARE
  
            v_customer  NUMBER(7):=201;
+
::::::v_customer  NUMBER(7):=201;
  
            v_name        VARCHAR2(25):='unisports';
+
::::::v_name        VARCHAR2(25):='unisports';
  
      BEGIN
+
::::::BEGIN
  
      END;
+
::::::::vcustomer      v_name        v_credit_rating     
  
END;
+
::::::END;
  
a) El valor de v_customer en el subbloc és:
+
::::::::vcustomer      v_name        v_credit_rating
  
b) El valor de v_name en el subbloc és:
+
::END;
  
c) El valor de v_credit_rating en el subbloc és:
+
:a) El valor de v_customer en el subbloc és:
  
d) El valor de v_customer en el bloc principal és:
+
:b) El valor de v_name en el subbloc és:
  
e) El valor de v_name en el bloc principal es
+
:c) El valor de v_credit_rating en el subbloc és:
  
f) El valor de v_credit_rating en el bloc principal és:
+
:d) El valor de v_customer 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.
+
:e) El valor de v_name en el bloc principal es
  
EXERCICI 4
+
:f) El valor de v_credit_rating en el bloc principal és:
  
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.
+
*'''Exercici 3'''
 +
 
 +
Crea i executa un bloc PL/SQL anomenat “T3E3.sql” que accepti dos números mitjançant variables  SQL*PLUS. S'ha de dividir el primer número pel segon i després afegir el segon número 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.
 +
 
 +
::Please enter the first number: 2
 +
 
 +
::Please enter the second number: 4
 +
 
 +
::PL/SQL procedure successfully completed._
 +
 
 +
::V_RESULT
 +
::--------
 +
::  4.5
 +
 
 +
*'''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 passaran  al bloc PL/SQL mitjançant variables de substitució SQL*PLUS i l'import de bonificació haurà de ser convertit de número enter a decimal (per exemple 15 a 0,15). Si el salari és nul assigneu-li zero abans de calcula la compensació. Utilitzeu la funció NVL per gestionar els valors nuls.
 +
 
 +
::Please enter the salary amount: 50000
 +
 
 +
::Please enter the bonus percentage: 10
 +
 
 +
::PL/SQL procedure successfully completed._
 +
 
 +
::G_TOTAL
 +
::--------
 +
::  55000

Revisió del 17:31, 9 abr 2014

T4- Sentencies executables

  • Exercici 1
Observa el següent bloc PL/SQL i determina els valors de les variables següents d'acord amb les regles d'àmbit
DECLARE
v_weight NUMBER(3):=600;
v_message VARCHAR2(255):='Product 10012';
BEGIN
DECLARE
v_weight NUMBER(3):=1;
v_message VARCHAR2(255):='Product 11001';
v_new_locn VARCHAR2(50):='Europe';
BEGIN
v_weight:= v_weight+1;
v_new_locn:='Western'|| v_new_locn;
END;
v_weight:= v_weight+1;
v_message:=v_message||'is in stock';
v_new_locn:='Western'|| v_new_locn;
END;


a) El valor de v_weight en el subbloc és:
b) El valor de v_new_locn en el subbloc és:
c) El valor de v_weight en el bloc principal és:
d) El valor de v_message en el bloc principal és:
e) El valor de v_new_locn en el bloc principal es
  • Exercici 2

Suposem que incloem un subbloc en un bloc tal com es mostra tot seguit. Determina els valors en els casos següents:

DECLARE
v_customer VARCHAR2(50):='Womansport';
v_credit_rating VARCHAR2(50):='excellent';
BEGIN
DECLARE
v_customer NUMBER(7):=201;
v_name VARCHAR2(25):='unisports';
BEGIN
vcustomer v_name v_credit_rating
END;
vcustomer v_name v_credit_rating
END;
a) El valor de v_customer en el subbloc és:
b) El valor de v_name en el subbloc és:
c) El valor de v_credit_rating en el subbloc és:
d) El valor de v_customer en el bloc principal és:
e) El valor de v_name en el bloc principal es
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 números mitjançant variables SQL*PLUS. S'ha de dividir el primer número pel segon i després afegir el segon número 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.

Please enter the first number: 2
Please enter the second number: 4
PL/SQL procedure successfully completed._
V_RESULT
--------
4.5
  • 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 passaran al bloc PL/SQL mitjançant variables de substitució SQL*PLUS i l'import de bonificació haurà de ser convertit de número enter a decimal (per exemple 15 a 0,15). Si el salari és nul assigneu-li zero abans de calcula la compensació. Utilitzeu la funció NVL per gestionar els valors nuls.
Please enter the salary amount: 50000
Please enter the bonus percentage: 10
PL/SQL procedure successfully completed._
G_TOTAL
--------
55000