Diferència entre revisions de la pàgina «M2 - Bases de dades / Exercicis UF3: Llenguatges SQL / Solucions PL-SQL T2»
(Hi ha 13 revisions intermèdies del mateix usuari que no es mostren) | |||
Línia 1: | Línia 1: | ||
'''1.-''' Especifica identificadors vàlids i no vàlids: | '''1.-''' Especifica identificadors vàlids i no vàlids: | ||
− | :a) today '''Válido''' | + | :a) today '''Válido''' |
− | :b) last_name '''Válido''' | + | :b) last_name '''Válido''' |
− | :c) today’s_date '''No Válido:''' no se permite el carácter “’” | + | :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 | + | :d) Number_of_days_in_February_this_year '''No Válido:''' demasiado largo |
− | :e) Isleap$year '''Válido''' | + | :e) Isleap$year '''Válido''' |
− | :f) #number '''No Válido:''' no puede empezar por “#” | + | :f) #number '''No Válido:''' no puede empezar por “#” |
− | :g) NUMBER# '''Válido''' | + | :g) NUMBER# '''Válido''' |
− | :h) number1to7 '''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. | ||
+ | <pre> | ||
+ | DECLARE | ||
+ | v_fname VARCHAR2(20); | ||
+ | v_lname VARCHAR2(15) DEFAULT 'fernandez'; | ||
+ | BEGIN | ||
+ | DBMS_OUTPUT.PUT_LINE(v_fname ||' ' ||v_lname); | ||
+ | END; | ||
+ | </pre> | ||
+ | :*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. | ||
+ | <pre> | ||
+ | DECLARE | ||
+ | v_today DATE:=SYSDATE; | ||
+ | </pre> | ||
+ | 2. Variable v_tomorrow del tipo today. Utilice el atributo %TYPE para declarar esta variable. | ||
+ | <pre> | ||
+ | v_tomorrow v_today%TYPE; | ||
+ | </pre> | ||
+ | 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” | ||
+ | <pre> | ||
+ | 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; | ||
+ | </pre> | ||
+ | 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): | ||
+ | |||
+ | [[Imatge:m2_uf3_sdv_1.png |300px|center| 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. | ||
+ | <pre> | ||
+ | VARIABLE b_basic_percent NUMBER | ||
+ | VARIABLE b_pf_percent NUMBER | ||
+ | </pre> | ||
+ | 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. | ||
+ | <pre> | ||
+ | :b_basic_percent:=45; | ||
+ | :b_pf_percent:=12; | ||
+ | </pre> | ||
+ | c) Termine el bloque PL/SQL con “/” y muestre el valor de las variables de enlace con el comando PRINT. | ||
+ | <pre> | ||
+ | / | ||
+ | PRINT b_basic_percent | ||
+ | PRINT b_pf_percent | ||
+ | O | ||
+ | PRINT | ||
+ | </pre> | ||
+ | d) Ejecute y guarde el script como lab_02_05_soln.sql. La salida de ejemplo es la siguiente: | ||
+ | |||
+ | [[Imatge:m2_uf3_sdv_2.png |300px|center| Declaració variables]] |
Revisió de 18:00, 1 març 2018
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):
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: