Las rutinas no son útiles para automatizar las tareas del administrador de sistemas gestores de bases de datos. Verdadero Falso. Partiendo del siguiente código:
DELIMITER //
DROP PROCEDURE IF EXISTS bucle //
CREATE PROCEDURE bucle ()
BEGIN
DECLARE y int UNSIGNED;
SET y = 0;
elbucle: WHILE y < 4 DO
SET y = y + 1;
SELECT 'Valor de y =' + y AS y;
Leave elbucle;
END WHILE elbucle;
END //
DELIMITER;
Indica la opción correcta: El bucle mostrará 1 vez el valor de y El bucle mostrará 3 veces el valor de y El bucle mostrará 4 veces el valor de y El bucle mostrará 2 veces el valor de y. A partir del código:
DELIMITER //
DROP PROCEDURE IF EXISTS bucle //
CREATE PROCEDURE bucle ()
BEGIN
DECLARE y int UNSIGNED;
SET y = 0;
elbucle: LOOP
SET y = y + 1;
IF y = 3 THEN
Iterate elbucle;
END IF;
SELECT 'Valor de y =' + y AS y;
IF y = 4 THEN
Leave elbucle;
END IF
END LOOP elbucle;
END //
DELIMITER;
Indica la opción correcta: El bucle mostrará las como valor de y: 2,3,4 El bucle mostrará las como valor de y: 1,2,3 El bucle mostrará 4 veces el valor de y El bucle mostrará 3 veces el valor de y. La sintaxis de REPEAT es:
[Etiqueta:] REPEAT UNTIL condición
instrucciones
END REPEAT [etiqueta] Verdadero Falso. Dado el siguiente ejemplo:
DELIMITER //
DROP PROCEDURE IF EXISTS parametro1 //
CREATE PROCEDURE parametro1 (IN_OUT p_p1 INTEGER)
BEGIN
SELECT p_p1;
/ * Aquí mostraría el valor inicial * /
SET p_p1 = 25
END //
DELIMITER; Funciona correctamente No funciona, está mal declarado el parámetro No funciona, no se pueden introducir comentarios entre BEGIN y END Funciona, pero devolverá siempre NULL. ¿Para qué sirve el siguiente código?:
CREATE PROCEDURE nombre_procedimento ([parametro1 [...]])
[LANGUAGE SQL]
[[NOT] DETERMINISTIC]
[{CONTAINER SQL | MODIFIES SQL DATA | READS SQL DATA | NOSQL}]
[SQL SECURITY {DEFINER | INVOKER}]
[COMMENT comentario]
bloque_de_instrucciones_del_procedimiento Sirve para crear una rutina Permite ver la información de nuestras rutinas Permite modificar rutinas Permite eliminar rutinas. ¿Para qué sirve el siguiente código?
SHOW CREATE {PROCEDURE | FUNCTION} sp_name
SHOW {PROCEDURE | FUNCTION} STATUS [LIKE patrón] Sirve para crear una rutina Permite ver la información de nuestras rutinas Permite modificar rutinas Permite eliminar rutinas. ¿Para qué sirve el siguiente código?
ALTER PROCEDURE nombre_rutina
{CONTAINER SQL | MODIFIES SQL DATA | READS SQL DATA | NOSQL}
| SQL SECURITY {DEFINER | INVOKER}
| COMMENT comentario Sirve para crear una rutina Permite ver la información de nuestras rutinas Permite modificar rutinas Permite eliminar rutinas. ¿Para qué sirve el siguiente código?
DROP {PROCEDURE | FUNCTION} [IF EXISTS] sp_name Sirve para crear una rutina Permite ver la información de nuestras rutinas Permite modificar rutinas Permite eliminar rutinas. La sintaxis para la gestión de errores es:
DECLARE {CONTINUE | EXIT | UNDO} ERROR FOR
{SQLSTATE sqlstate_code | MySQL error code | name_condition}
instrucciones_del_manejador Verdadero Falso. Si tenemos el siguiente código:
01: DELIMITER //
02: DROP PROCEDURE IF EXISTS bloques //
03: CREATE PROCEDURE bloques ()
04: BEGIN
05: DECLARE v INT DEFAULT 400;
06: BEGIN
07: DECLARE v INT;
08: SET V = 100;
09: SELECT V;
10: SET V = V + 100;
11: END
12: SELECT v;
13: SET V = V + 100;
14: END //
15: DELIMITER; En la línea 12 mostrará 400 En la línea 9 mostrará 200 En la línea 12 mostrará 200 En la línea 9 mostrará 500. Las rutinas pueden incluirse en otras funciones o procedimientos así como en el interior de sentencias SQL como SELECT, UPDATE, DELETE y INSERT. Verdadero Falso. Dado el siguiente código:
DELIMITER //
DROP PROCEDURE IF EXISTS bucle //
CREATE PROCEDURE bucle ()
BEGIN
DECLARE y INT UNSIGNED;
SET y = 0;
elbucle: LOOP
SET y = y + 1;
SELECT 'Valor de y =' + y AS y;
IF y <= 4 THEN
Leave elbucle;
END IF
END LOOP elbucle;
END //
DELIMITER ; El bucle se repetirá 1 vez El bucle se repetirá 3 veces El bucle se repetirá 5 veces El bucle se repetirá 4 veces. Ordene la frase correctamente:
Un [ ] es un [ ] que [ ] cuando se verifica una condición tras una [ ] generada por el [ ]. [servidor] [handler] [bloque_de_instrucciones_SQL] [se_ejecuta] [excepción]. Teniendo en cuenta la sintaxis general de rutina, relaciona: Indica si las sentencias modifican o no los dato Especifica si contiene sentencias SQL o no Determina si debe ejecutarse con permisos del creador (definer) o quien invoca (invoker) Indica si es determinista o no, es decir, si siempre produce el mismo resultado. Relaciona los comandos con su descripción: Si queremos ver si el procedimiento existe podemos utiliza Si queremos cargar la rutina, tendremos que hacer Una vez tenemos la rutina cargada, la ejecutaremos así. Si tenemos el siguiente código:
DELIMITER //
DROP PROCEDURE IF EXISTS bucle //
CREATE PROCEDURE bucle ()
BEGIN
DECLARE i TINYINT UNSIGNED;
SET i = 0;
elbucle: REPEAT
SET i = i + 1;
SELECT 'Valor de i =' + i AS i;
UNTIL i < 4
END REPEAT elbucle;
END //
DELIMITADOR El bucle se repetirá 2 veces El bucle se repetirá 1 vez El bucle se repetirá 3 veces El bucle se repetirá 4 veces. La sintaxis de la condición IF es:
IF condición1 THEN instrucciones
[ELSE instrucciones]
[ELSEIF condición2 THEN instrucciones ....]
END IF; Verdadero Falso. Relaciona los manejadores de errores con su significado: Permite poner fin al bloque de instrucciones o programa donde se genera la excepción o error Es un manejador reconocido pero que no está soportado La excepción o error no interrumpe el código del procedimiento. La sintaxis de la condición CASE es:
CASE expresión
WHEN valor1 THEN
instrucciones
[ELSE
instrucciones]
[WHEN valor2 THEN
instrucciones ...]
[ELSE
instrucciones]
END CASE; Verdadero Falso. A partir del siguiente código, relaciona:
01: DELIMITER //
02:
03: DROP PROCEDURE IF EXISTS cursor //
04: CREATE PROCEDURE cursor ()
05: BEGIN
06: DECLARE v_id INT;
07: DECLARE v_alumno VARCHAR (30)
08: DECLARE c_alumnos CURSOR FOR
09: SELECT id, alumno / * SELECT * * /
10: FROM alumnos
11: WHERE id <= 2; / * - solo las 2 primeras filas * /
12: OPEN c_alumnes
13: alumnes_cursor: LOOP
14: FETCH c_alumnes INTO v_id, v_alumne;
15: / * aquí va el tratamiento recuperado de los datos * /
16: / * solo las visualizamos de momento * /
17: SELECT v_id, v_alumne;
18: END LOOP alumnes_cursor;
19: CLOSE c_alumnes;
20:
21: END //
22:
23: DELIMITER ; ¿Qué pasa en la línea 14? ¿Qué pasa entre la línea 8 y 11? ¿Dónde se cierra el cursor? ¿Dónde se produce la apertura del
cursor?. Si tenemos el siguiente código:
01: DELIMITER //
02: DROP PROCEDURE IF EXISTS bloques //
03: CREATE PROCEDURE bloques ()
04: BEGIN
05: DECLARE v INT DEFAULT 400;
06: BEGIN
07: DECLARE v INT;
08: SET V = 100;
09: SELECT V;
10: SET V = V + 100;
11: END
12: SELECT v;
13: SET V = V + 100;
14: END //
15: DELIMITER;
¿En qué línea el SELECT nos mostrará 400? En la línea 12 En la línea 9 En la línea 13 En ninguna. Relaciona cada condición con nombre predefinida de MySQL con su subconjunto: Subconjunto de códigos SQLSTATE, representando los códigos
que empiezan por 02 Subconjunto de códigos SQLSTATE, representando los códigos
que empiezan por 01 Subconjunto de códigos SQLSTATE, representando los códigos
que no empiezan por 01 o 02. Teniendo en cuenta la sintaxis general de rutina,
CREATE PROCEDURE sp_name ([parameter [...]])
(Characteristlc ...] routine_body
CREATE FUNCTION sp_name ([parameter [, ...]])
RETURNS type
[Characteristic ...] routine_body
parameter:
[IN | OUT | INOUT] param_name type
type:
Any valid MySQL data type
Características:
LANGUAGE SQL
| [NOT] DETERMINISTIC
| { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
Relaciona los opciones con su significado: Nombre de la rutina almacenada Indica si
siempre produce el mismo resultado o no Cuerpo de la rutina formado generalmente
por sentencias SQL Parámetros que en general se
caracterizan por un tipo y un nombre. ¿Es correcta esta sintaxis general en rutinas?
CREATE PROCEDURE sp_name ([parameter [ , ...]])
(characteristlc ... ] routine_body
CREATE FUNCTION sp_name ( [parameter[ , .. . ]])
RETURNS type
[characteristic ... ] routine_body
parameter :
[ IN | OUT | INOUT ] param_name type
type:
Any valid MySQL data type
characteristic:
LANGUAGE SQL
| [NOT] DETERMINISTIC
| { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
Verdadero Falso. Si tenemos el siguiente código:
DELIMITER //
DROP PROCEDURE IF EXISTS condicional //
CREATE PROCEDURE condicional(IN v_forma_pago VARCHAR(30)) //
BEGIN
CASE v_forma_pago
WHEN 'metal' THEN
SELECT 'Forma de pago: metálico';
WHEN 'tarjeta' THEN
SELECT 'Forma de pago: tarjeta';
ELSE
SELECT 'Forma de pago: transferencia';
END CASE;
END //
DELIMITER ;
Indica la opción incorrecta: Para v_forma_pago = 'transferencia' mostrará 'Forma de pago: transferencia' Para v_forma_pago = 'Bitcoin' mostrará 'Forma de pago: transferencia' Para v_forma_pago = 'metálico' mostrará 'Forma de pago: metálico' Para v_forma_pago = 'tarjeta' mostrará 'Forma de pago: tarjeta'.
|