Documentos de Académico
Documentos de Profesional
Documentos de Cultura
SET SERVEROUTPUT ON
DECLARE
v_nombre VARCHAR2(10) := 'Emilio';
BEGIN
dbms_output.put_line('Mi nombre es: : ' || v_nombre);
END;
DECLARE
v_fecha DATE;
v_deptno NUMBER(2) NOT NULL := 10;
v_lugar VARCHAR2(13) DEFAULT 'Sicilia';
c_altura CONSTANT NUMBER := 1.72;
BEGIN
v_lugar := 'Menorca';
v_fecha := '14/12/1984';
dbms_output.put_line('Naci el: ' || v_fecha);
dbms_output.put_line('En la isla mas bonita del mundo que es: ' || v_lugar);
dbms_output.put_line('Mido: ' || c_altura);
END;
/
END;
/
-- Crear una funcón que dada una fecha nos devuelva el nombre del dia
dbms_output.put_line(v_horario);
END;
/
/*Este ejemplo muestra el uso de ELSIF; el cual nos ofrece la posibilidad de dar
una validación mas especifica.*/
DECLARE
v_edad NUMBER;
BEGIN
v_edad := &edad;
IF v_edad BETWEEN 1 AND 17 THEN
dbms_output.put_line('Edad: '
|| v_edad
|| ' Años'
|| chr(10)
|| 'El individuo es Menor de edad!!!');
END;
/
RETURN v_dia_sem;
END f_dia_semana;
/
v_dia := f_dia_semana(v_fecha);
CASE v_dia
WHEN 'LUNES' THEN
dbms_output.put_line( v_fecha || ' Lunes. Iniciando la semana laboral,
que flojera.');
WHEN 'MARTES' THEN
dbms_output.put_line( v_fecha || ' Martes. Fin de semana lejos, sigue
la flojera.');
WHEN 'MIERCOLES' THEN
dbms_output.put_line( v_fecha || ' Miercoles. Ombligo de la semana, no
se reportan mejoras de animo.');
WHEN 'JUEVES' THEN
dbms_output.put_line( v_fecha || ' Jueves. Llegó algo de esperanza al
cuerpo, el futuro se pinta mejor.');
WHEN 'VIERNES' THEN
dbms_output.put_line( v_fecha || ' Viernes. ¡Tu cuerpo sabe que es
Viernes y lo sabes!');
ELSE
dbms_output.put_line( v_fecha || ' Finde. A descansar.');
END CASE;
END;
/*Ejemplo de loop */
DECLARE
v_max_id alumnos.id_alumno%TYPE;
v_id_alu alumnos.id_alumno%TYPE;
v_nombre alumnos.nombre_completo%TYPE;
v_fechana alumnos.fecha_nacimiento%TYPE := '01/01/2002';
v_count NUMBER := 1;
BEGIN
SELECT
MAX(id_alumno)
INTO v_max_id
FROM
alumnos;
-- Bucle para añadir datos
LOOP
v_id_alu := v_max_id + v_count;
v_nombre := CONCAT('Nombre', v_id_alu);
v_fechana := '01/01/2002';
INSERT INTO alumnos ( id_alumno, nombre_completo, fecha_nacimiento) VALUES
( v_id_alu, v_nombre, v_fechana );
dbms_output.put_line( 'Nuevo ID de alumno insertado con número: ' ||
v_id_alu);
v_count := v_count + 1;
EXIT WHEN v_count > 3;
END LOOP;
END;
/
-- Vuelta a tras lo que se ha insertado
ROLLBACK;
DECLARE
salario_anual NUMBER;
incentivo NUMBER;
BEGIN
salario_anual := &salario_mensual * 12;
IF salario_anual >= 1000 THEN
incentivo := 300;
ELSIF salario_anual <= 9999 THEN
incentivo := 200;
ELSE
incentivo := 100;
END IF;
/*En este bloque anónimo, se define una variable llamada "v_salario_base" que
contiene el salario base de un empleado, y otras tres variables que son solicitadas
al usuario mediante la utilización de una variable bind "&".
Luego, se utiliza una estructura de control IF-ELSE para calcular el salario total
de un empleado dependiendo de la cantidad de horas trabajadas y la tarifa por hora.
Posteriormente, se utiliza un bucle FOR para iterar sobre los valores de una tabla
llamada "empleados".
Dentro del bucle FOR, se utilizan estructuras de control condicionales IF-ELSEIF-
ELSE para imprimir información del registro y una descripción según la edad del
empleado.
Este bloque anónimo puede ser ejecutado en una herramienta de desarrollo de PL/SQL
y mostrará en la consola información acerca del salario total y de cada registro en
la tabla "empleados".
*/
DECLARE
v_salario_base NUMBER := 1000;
v_salario_total NUMBER;
v_cantidad_horas_trabajadas NUMBER := &horas_trabajadas;
v_tarifa_hora NUMBER := &tarifa_hora;
BEGIN
-- Calcular salario total
IF v_cantidad_horas_trabajadas <= 40 THEN
v_salario_total := v_salario_base + (v_cantidad_horas_trabajadas *
v_tarifa_hora);
ELSE
v_salario_total := v_salario_base + (40 * v_tarifa_hora) +
((v_cantidad_horas_trabajadas - 40) * v_tarifa_hora * 1.5);
END IF;