M2 - Bases de dades / Exercicis UF3: Llenguatges SQL / Solucions PL-SQL T2

De wikiserver
Dreceres ràpides: navegació, cerca

1.- Especifica identificadors vàlids i no vàlids:

a) today                                                                   Válido
b) last_name                                                             Válido
c) today’s_date                                                         No Válido: no se permite el carácter “’”
d) Number_of_days_in_February_this_year                  No Válido: demasiado largo
e) Isleap$year                                                           Válido
f) #number                                                               No Válido: no puede empezar por “#”
g) NUMBER#                                                            Válido
h) number1to7                                                         Válido

2.- Identifique las declaraciones e inicializaciones de variables válidas y las no válidas:

a) number_of_copies           PLS_INTEGER;                              Válido
b) PRINTER_NAME               constant VARCHAR2(10);             No válido
c) deliver_to                        VARCHAR2(10):=Johnson;             No válido
d) by_when                          DATE:= CURRENT_DATE+1;         Válido
La declaración b no es válida porque las variables constantes se deben inicializar durante la declaración.
La declaración c no es válida porque los literales de cadena deben aparecer entre comillas simples.

3) Examine el siguiente bloque anónimo y seleccione la frase que sea verdadera de entre las siguientes.

   DECLARE
     v_fname VARCHAR2(20);
     v_lname VARCHAR2(15) DEFAULT 'fernandez';
     BEGIN
       DBMS_OUTPUT.PUT_LINE(v_fname ||' ' ||v_lname);
     END;
  • a)El bloque se ejecuta correctamente y se imprime “fernandez”.
  • b)El bloque produce un error porque se utiliza la variable fname sin inicializarse.
  • c)El bloque se ejecuta correctamente y se imprime “null fernandez”.
  • d)El bloque produce un error porque no se puede utilizar la palabra clave DEFAULT para inicializar una variable de tipo VARCHAR2.
  • e) El bloque produce un error porque no se declara la variable v_fname.
a. El bloque se ejecuta correctamente y se imprime “fernandez”.

4) Modifique un bloque anónimo existente y guárdelo como nuevo script.

a) Abra el script lab_01_02_soln.sql, creado en la Práctica 1.
b) En el bloque PL/SQL, declare las siguientes variables:

1. Variable v_today del tipo DATE. Inicialice today con SYSDATE.

   DECLARE
     v_today DATE:=SYSDATE;

2. Variable v_tomorrow del tipo today. Utilice el atributo %TYPE para declarar esta variable.

   v_tomorrow v_today%TYPE;

c) En la sección ejecutable: 1. Inicialice la variable v_tomorrow con una expresión, que calcule la fecha de mañana (agregue uno al valor de v_today) 2. Imprima el valor de v_today y v_tomorrow después de imprimir “Hello World”

   BEGIN
     v_tomorrow:=v_today +1;
     DBMS_OUTPUT.PUT_LINE(' Hello World ');
     DBMS_OUTPUT.PUT_LINE('TODAY IS : '|| v_today);
     DBMS_OUTPUT.PUT_LINE('TOMORROW IS : ' || v_tomorrow);
END;

d) Guarde el script como lab_02_04_soln.sql y ejecute.

La salida de ejemplo es como la siguiente (los valores de v_today y v_tomorrow serán diferentes para reflejar la fecha actual de hoy y la de mañana):

Declaració variables

5) Edite el script lab_02_04_soln.sql.

a) Agregue código para crear dos variables de enlace: b_basic_percent y b_pf_percent. Ambas son del tipo NUMBER.

   VARIABLE b_basic_percent NUMBER
   VARIABLE b_pf_percent NUMBER

b) En la sección ejecutable del bloque PL/SQL, asigne los valores 45 y 12 a b_basic_percent y b_pf_percent, respectivamente.

   :b_basic_percent:=45;
   :b_pf_percent:=12;

c) Termine el bloque PL/SQL con “/” y muestre el valor de las variables de enlace con el comando PRINT.

   /
   PRINT b_basic_percent
   PRINT b_pf_percent
   O
   PRINT

d) Ejecute y guarde el script como lab_02_05_soln.sql. La salida de ejemplo es la siguiente:

Declaració variables