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- Declaració de variables)
Línia 1: Línia 1:
==T3- Declaració de variables ==
+
==T4- Sentencies executables ==
  
*'''Exercici 1'''
+
EXERCICI 1
  
:Avalua les següents declaracions de variables determinant quines no son correctes (donen error), explica perquè.
+
OBSERVA EL SEGÜENT BLOC PL/SQL I DETERMINA ELS VALORS DE LES VARIABLES SEGÜENTS D'ACORD AMB LES REGLES D'ÀMBIT
  
::a) DECLARE v_id NUMBER(4);
+
DECLARE
  
    Correcte.
+
v_weight NUMBER(3):=600;
  
::b) DECLARE v_x, v_y,v_z VARCHAR2(10);  
+
v_message VARCHAR2(255):='Product 10012';
  
    Incorrecte, perquè només es permet un identificador per declaració.
+
BEGIN
  
::c) DECLARE v_data_naixament DATE NOT NULL;
+
    DECLARE
  
    Incorrecte, perquè una variable NOT NULL ha d'inicialitzar-se.
+
        v_weight NUMBER(3):=1;
  
::d) DECLARE v_en_stock BOOLEAN :=1
+
        v_message VARCHAR2(255):='Product 11001';
  
    Incorrecte, perquè 1 no és una expressió booleana.
+
        v_new_locn VARCHAR2(50):='Europe';
  
*'''Exercici 2'''   
+
      BEGIN
  
:Determina el tipus de dades de les expressions resultants en les següents assignacions
+
        v_weight:= v_weight+1;
  
::a) v_dies_que_falten := v_date - SYSDATE;  
+
        v_new_locn:='Western'|| v_new_locn;
  
    Number 
+
      END;
  
::b) v_sender := USER || ':' || TO_CHAR(v_deptno);  
+
  v_weight:= v_weight+1;
  
    Caràcter
+
  v_message:=v_message||'is in stock';
  
::c) v_sum := $100,000+$250,000
+
  v_new_locn:='Western'|| v_new_locn;
  
    Incorrecte. No es poden convertir símbols especials de VARCHAR2 a NUMBER
+
END;
  
::d) v_bandera := TRUE
 
  
    Booelan
+
a) El valor de v_weight en el subbloc és:
  
::e) v_n1 := v_n2 > (2*v_n3);
+
b) El valor de v_new_locn en el subbloc és:
  
    Boolean
+
c) El valor de v_weight en el bloc principal és:
  
::f) v_valor := NULL;
+
d) El valor de v_message en el bloc principal és:
  
    Qualsevol tipus d'escalar.
+
e) El valor de v_new_locn en el bloc principal es
  
 +
EXERCICI 2
  
*'''Exercici 3'''
+
SUPOSEM QUE INCLOEM UN SUBBLOC EN UN BLOC TAL COM ES MOSTRA TOT SEGUIT. DETERMINA ELS VALORS EN ELS CASOS SEGÜENTS
  
:Crea un bloc anònim per imprimir la frase “Benvingut a PL/SQL”
+
DECLARE
 +
 
 +
  v_customer    VARCHAR2(50):='Womansport';
 +
 
 +
  v_credit_rating    VARCHAR2(50):='excellent';
  
<pre>
 
VARIABLE g_message VARCHAR2(30)
 
 
BEGIN
 
BEGIN
  :g_message := 'My PL/SQL Block Works';
+
 
 +
      DECLARE
 +
 
 +
            v_customer  NUMBER(7):=201;
 +
 
 +
            v_name        VARCHAR2(25):='unisports';
 +
 
 +
      BEGIN
 +
 
 +
      END;
 +
 
 
END;
 
END;
/
 
PRINT g_message
 
  
G_MESSAGE
+
a) El valor de v_customer en el subbloc és:
---------------------------------------------------------
+
 
My PL/SQL Block Works   
+
b) El valor de v_name en el subbloc és:
</pre>
+
 
 +
c) El valor de v_credit_rating en el subbloc és:
  
*'''Exercici 4'''
+
d) El valor de v_customer en el bloc principal és:
  
: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.
+
e) El valor de v_name en el bloc principal es
  
::::        V_CHAR Character (variable length)
+
f) El valor de v_credit_rating en el bloc principal és:
 +
EXERCICI 3
  
::::        V_Number
+
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.
  
::::    Assigna els següents valors a les variables:
+
EXERCICI 4
  
::::        Variable Value
+
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
::::        --------- ---------------------------------------------
 
::::        V_CHAR The literal '42 is the answer'
 
::::        V_NUM The first two characters form V_CHAR
 
<pre>
 
VARIABLE g_char VARCHAR2(30)
 
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;
 
/
 
PRINT g_char
 
PRINT g_num
 
</pre>
 

Revisió del 16:47, 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
      END;

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 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