Sei sulla pagina 1di 8

INSTITUTO TECNOLÓGICO SUPERIOR DE MOTUL

INGENIERÍA EN SISTEMAS COMPUTACIONALES

PL-SQL

PRACTICA 3

MAESTRO:

L.C.C JESUS EPIFANIO BOTE MAY

ALUMNO:

POOT CANUL MAURICIO GABRIEL

SEMESTRE: OCTAVO

GRUPO: B

MOTUL, YUCATÁN, MÉXICO

FECHA: Friday, 24 de April de 2020


Prá ctica 3.
La práctica utiliza un ejemplo de bloque PL/SQL y verifica el entendimiento de las reglas de alcance. Los
ejercicios deben realizarse con el mismo usuario con los que se han realizado las prácticas anteriores.

1. Evalúa el bloque PL/SQL y determina los tipos de dato y el valor de cada una de
las siguientes variables de acuerdo con la reglas de alcance.

a. El valor de V_WEIGHT en la posición 1 es: 2


b. El valor de V_NEW_LOCN en la posición 1 es: Western Europe
c. El valor de V_WEIGHT en la posición 2 es: 601
d. El valor de V_MESSAGE en la posición 2 es: Product 10012 is in
stock
e. El valor de V_NEW_LOCN en la posición 2 es: No tiene algún valor
porque no se declaró en el la sección que le
correspondiente.

2. Usando el bloque anterior, determina los valores y los tipos de dato para cada uno
de los siguientes casos.
a. El valor de CUSTOMER en el bloque anidado es: 201

b. El valor de NAME en el bloque anidado es: el Unisports

c. El valor de CREDIT_RATING en el bloque anidado es: GOOD

d. El valor de CUSTOMER en el bloque principal es: Womansport

e. El valor de NAME en el bloque principal es: No tiene variable name

f. El valor de CREDIT_RATING en el bloque principal es: EXCELLENT

3. Edita el script lab_02_05_soln.sql.

a. Comentar línea por línea las líneas que crean variables bind.
b. Comenta las líneas, en la sección ejecutable, que asignan valores a las
variables bind. Usa comentario para múltiples líneas.
c. Declara dos variables: fname de tipo VARCHAR2 y longitud 15, y emp_sal de
tipo NUMBER y longitud 10.
d. Incluir la siguiente sentencia SQL en la sección ejecutable:
SELECT first_name, salary
INTO fname, emp_sal FROM employees
WHERE employee_id=110;

e. Cambia la línea que imprime ‘Hello World’ para que despliegue ‘Hello’ y el
primer nombre. Comenta si quieres, las líneas que despliegan la fecha y las
variables bind
f. Calcular la contribución de los empleados al fondo de jubilación (PF).
PF es el 12% del salario base y el salario base es el 45% del salario. Usar
variables bind para el cálculo. Intenta usar solo una expresión para realizar
el cálculo. Despliega el salario del empleado y su contribución al fondo de
pensión.
g. Ejecuta y guarda tu script con el nombre lab_03_03_soln.sql. Ejemplo de
salida:

variable
basic_percent
number; variable
pf_percent number;
variable pf number;

SET SERVEROUTPUT ON

DECLARE

frase VARCHAR2(20);

fname
VARCHAR2(15
); EMP_SAL
NUMBER(10);

BEGIN
frase := 'Hello';
:basic_percent := 45; /*aqui se le asigno un valor y referenció una variable
Bind*/ :pf_percent := 12;

SELECT first_name, salary


INTO fname, emp_sal FROM employees
WHERE employee_id=110;

:pf := ((emp_sal * (:basic_percent/100))* (:pf_percent/100));

DBMS_OUTPUT.PUT_LINE( frase||' '|| fname);


DBMS_OUTPUT.PUT_LINE( 'YOUR SALARY IS:'|| emp_sal);
DBMS_OUTPUT.PUT_LINE( 'YOUR CONTRIBUTION TOWARDS PF:'|| :pf);

END;

4. Ingresa un valor en tiempo de ejecución usando variables de sustitución. En esta


práctica, se modificará el script generado en el ejercicio 3.
a. Cargar el script lab_03_04.sql.
b. Incluir el comando PROMPT para desplegar al usuario el siguiente mensaje:
‘Please enter your employee number.’
c. Modifica la declaración de la variable empno para que acepte el valor que
ingrese el usuario.
d. Modifica la sentencia SELECT para incluir la variable empno.
e. Ejecuta y guarda el script con el nombre lab_03_04_soln.sql. A
continuación un ejemplo de salida.

Ingresa 100 y presiona el botón Continue.

5. Ejecute el script t lab_03_05.sql. Este script crea la tabla llamada


employee_details.
a. Las tablas employees y employee_details tienen los mismos datos.
Actualizarás la información de la tabla employee_details. No modifiques o
cambies información en la tabla employees.
b. Abre el script lab_03_05b.sql y observa el código. Nota que el código
recibirá la clave de empleado y clave de departamento que capture el
usuario.
c. Se usará este templete para desarrollar la aplicación tal y como se
mencionó en la lección de Introducción.
SET SERVEROUTPUT ON
SET VERIFY OFF
ACCEPT emp_id PROMPT 'Please enter your employee number';
ACCEPT emp_deptid PROMPT 'Please enter the department number for which salary
revision is being done';

DECLARE
emp_authorization
NUMBER(5); emp_id
NUMBER(5):=&emp_id;
emp_deptid
NUMBER(6):=&emp_deptid;
no_such_employee EXCEPTION;

-- INCLUDE EXECUTABLE SECTION OF OUTER BLOCK HERE

-- RAISE EXCEPTION HERE

-- INCLUDE SIMPLE IF STATEMENT HERE

DECLARE
emp_sal employee_details.salary
%TYPE; emp_fname
employee_details.first_name%TYPE;
emp_lname employee_details.last_name
%TYPE; i NUMBER:=1;
-- DECLARE AN INDEX BY TABLE OF TYPE VARCHAR2(50). CALL
-- IT ename_table_type

-- DECLARE A VARIABLE ename_table OF TYPE ename_table_type

c_hike1 constant
real :=.20; c_hike2
constant real :=.15;
c_hike3 constant real :=.08;
c_hike4 constant real :=.03;

c_range1 constant number


:=6500; c_range2 constant
number :=9500;
c_range3 constant number :=12000;

-- DECLARE A CURSOR CALLED emp_records TO HOLD salary,


-- first_name, and last_name of employees

-- INCLUDE EXECUTABLE SECTION OF INNER BLOCK HERE

-- CLOSE THE INNER BLOCK

ELSE
DBMS_OUTPUT.PUT_LINE ('SORRY YOU ARE NOT AUTHORIZED TO USE THIS
APPLICATION'); END IF;

-- INCLUDE EXCEPTION SECTION FOR OUTER BLOCK

-- CLOSE THE OUTER BLOCK

Potrebbero piacerti anche