Beruflich Dokumente
Kultur Dokumente
OBJETIVOS:
Construir bloques anónimos en los cuales se utilizan variables con el atributo %TYPE y
variables RECORD.
Codificar bloques anónimos en los cuales se utilizan sentencias SQL como SELECT,
INSERT.
En la clase anterior habíamos trabajado sobre los tipos de datos de las variables y hablamos del
tipo de dato escalar donde se dice que ellos almacenan un valor único
Pero también se dice en muchas situaciones las variables PL/SQL manipulan datos almacenados en
una tabla de la base de datos, y se requiere que la variable tenga el mismo tipo que la columna de la
tabla, sin importar los diferentes cambios de tipo que tenga la columna: se usa entonces un atributo
%TYPE.
Cuando el atributo %TYPE se añade a una referencia a una columna de tabla o a cualquier otra
variable, devuelve el tipo de la misma, no obstante no involucra la restricción de obligatoriedad de la
columna (NOT NULL).
Recordar:
Podemos utilizar instrucciones SQL dentro de los bloques PL/SQL para recuperar datos de la base
de datos o para actualizar los datos que contiene.
Ejemplo1:
DECLARE
nombre_variable DATE;
BEGIN
SELECT SYSDATE INTO nombre_variable FROM DUAL;
Ejemplo 2: Recupere la suma de los sueldos de todos los empleados de un cargo específico
donde dicho cargo lo debe dar el usuario
Ejemplo 3: Escribir un bloque anónimo donde se traiga el nombre y la dirección del cliente
que el usuario desee consultar.
2
Ejercicio 4:
Realice un programa que actualiza la comisión. El programa debe recibir el nombre del empleado y
asignar como comisión el 5% de toda las ventas que ha realizado.
DECLARE
v_nombre empleado.nombre%TYPE ;
v_total number(10,2) ;
BEGIN
v_nombre:='&nombreempleado';
SELECT sum(valor)
INTO v_total
FROM ventas, empleado
WHERE empleado.cod_empleado=ventas.codigo_empleado
and nombre=v_nombre;
UPDATE empleado
SET comision = v_total * 0.05 + comision
WHERE nombre=v_nombre;
END;
/
Ejercicio 5
DECLARE
v_id_ventas ventas.codigo_ventas%TYPE:= 109;
BEGIN
DELETE FROM ventas
WHERE codigo_ventas = v_id_ventas;
END;
Ejercicio 6
BEGIN
INSERT INTO empleado (cod_empleado
, nombre, cargo , sueldo)
VALUES (60 , 'Feuerstein', 'vendcat3' , 200000);
END;
/
3
EJEMPLO CON LA ESTRUCTURA IF Y LA SENTENCIA SELECT
Recuerde: Sintaxis
IF (OPERACIÓN LOGICA) THEN
ELSIF THEN
ELSE
END IF;
En el ejercicio anterior donde se tenía la suma del valor total de las ventas por empleado
consultado lo podemos modificar sabiendo que si el total de ventas es menor a 3000 no
asigno comisión, sin son entre 3000 y 5000 comisionas el 3%, si vendes más de 5000 es el 5%.
Escribir un bloque anónimo que permite simular una interfaz de usuario a través de la cual se ingresa
el número de identificación del cliente y se muestra en pantalla su nombre completo y la descripción
de su compra según una fecha dada. Este ejercicio está orientado a mostrar una consulta con varias
tablas.
DECLARE
v_num_ide ventas.codigo_ventas%TYPE,
v_nombres clientes.nombre%TYPE,
v_describe ventas.articulo%TYPE ,
BEGIN
v_num_ide := &codigo_venta;
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE(‘El codigo ‘||v_num_ide ||’no existe’);
END;
/
4
EXCEPTION
Se conoce como el control y tratamiento de errores. Es el punto al que se transfiere el control del
programa siempre que exista un problema.
SINTAXIS DE UN EXCEPTION
EJERCICIO INDEPENDIENTE:
http://elbauldelprogramador.com/plsql-excepciones/