miércoles, 29 de abril de 2015

Tarea N° 2: "Lenguaje PL/SQL"


¿Que es PL/SQL?

El "PL/SQL" es un lenguaje de procesamiento procedimental implementado por Oracle que reside directamente en la BD.

Este es capaz de soportar todas las consultas, ya que la manipulación de datos que se usa es la misma que en lenguaje SQL, aunque a diferencia de este ultimo, el lenguaje PL/SQL incluye nuevas características mencionadas a continuación:

- El manejo de variables.
- Estructuras modulares.
- Estructuras de control de flujo y toma de  decisiones.
- Control de excepciones.


Los programas creados con PL/SQL los podemos almacenar en nuestra base de datos como cualquier otro objeto quedando disponibles para los usuarios. El uso del lenguaje PL/SQL es imprescindible para construir disparadores de bases de datos (triggers).

PL/SQL esta incluido en el servidor y en algunas herramientas de cliente. Soporta todos los comandos de consulta y manipulación de datos, aportando al lenguaje SQL las estructuras de control y otros elementos propios de los lenguajes de programación de 3º generación.

La unidad de trabajo en PL/SQL es el bloque, constituido por un conjunto de declaraciones, instrucciones y mecanismos de gestión de errores y excepciones.

Unidad de Trabajo "Bloques":

Con PL/SQL se pueden construir distintos tipos de programas: procedimientos, funciones y bloques anónimos, paquetes, etc. Todos ellos tienen en común una estructura básica denominada bloque.

Un bloque tiene 3 zonas:

- Zona de declaraciones: donde se declaran objectos locales. Suele ir precedida por la cláusula declare (o is o as en los procedimientos y funciones).

- Un conjunto de instrucciones precedido por la cláusula BEGIN 

- Zona de excepciones: es una zona opcional precedida por la cláusula EXCEPTION, donde se gestionan las excepciones.
El formato genérico de un bloque es el siguiente:

[ DECLARE
   <declaraciones>]
BEGIN
   <instrucciones>
[EXCEPTION
   <gestión de excepciones>]
END;


Las únicas cláusulas obligatorias son BEGIN y END
Antes de hacer ningún bloque tenemos que ejecutar el siguiente comando en nuestra ventana de Sql *PLUS

set serveroutput on;



Un Ejemplo Seria:

DECLARE
    v_num_empleados number(2);
BEGIN
    insert into depart values(99,'provisional',null);
   update emple set dept_no=99 where dept_no=20;
   v_num_empleados:=SQL%ROWCOUNT;
   delete from depart where dept_no=20
   DBMS_OUTPUT.PUT_LINE (v_num_empleados || 'Empleados cambiados a provisional');











miércoles, 8 de abril de 2015

Tarea 1

Saludos camaradas, dejamos el link del SQL Fiddle con la tarea AQUÍ.

El código para que lo vean ahorita:

-- CREA LA TABLA EMPLEADO, RESTRINGIENDO TODO LO ESCENCIAL

CREATE TABLE EMPLEADO
(
  IDEMPLEADO INTEGER CONSTRAINT PK_EMP_VIOLADA PRIMARY KEY,
  NOMBRE VARCHAR2(20) NOT NULL,
  APELLIDO VARCHAR2(20)NOT NULL,
  EMAIL VARCHAR2(30) CONSTRAINT EMAIL_EMP_VIOLADA UNIQUE
);

-- CREA LA TABLA CARGA, HACIENDO LA RELACION CON LA TABLA EMPLEADO

CREATE TABLE CARGA
(
  IDCARGA INTEGER CONSTRAINT PK_CARGA_VIOLADA PRIMARY KEY,
  NOMBRE VARCHAR2(20) NOT NULL,
  APELLIDO VARCHAR2(20) NOT NULL,
  IDEMPLEADO INTEGER CONSTRAINT CARGA_EMP_FK_VIOLADA REFERENCES EMPLEADO(IDEMPLEADO)
);

-- INSERTO DATOS EN LA TABLA EMPLEADO

INSERT INTO EMPLEADO (IDEMPLEADO,NOMBRE,APELLIDO) VALUES (1,'ROBERTO','PAILAMILLA');
INSERT INTO EMPLEADO (IDEMPLEADO,NOMBRE,APELLIDO) VALUES (2,'JONATHAN','PONCE');
INSERT INTO EMPLEADO (IDEMPLEADO,NOMBRE,APELLIDO) VALUES (3,'DIEGO','JEREZ');
INSERT INTO EMPLEADO (IDEMPLEADO,NOMBRE,APELLIDO) VALUES (4,'LUIS','CATRICHEO');
INSERT INTO EMPLEADO (IDEMPLEADO,NOMBRE,APELLIDO) VALUES (5,'HENRY','GALVEZ');
INSERT INTO EMPLEADO (IDEMPLEADO,NOMBRE,APELLIDO) VALUES (6,'NICOLE','KITMAN');
INSERT INTO EMPLEADO (IDEMPLEADO,NOMBRE,APELLIDO) VALUES (7,'GERARDO','SILVA');
INSERT INTO EMPLEADO (IDEMPLEADO,NOMBRE,APELLIDO) VALUES (8,'YAMAL','PEREZ');
INSERT INTO EMPLEADO (IDEMPLEADO,NOMBRE,APELLIDO) VALUES (9,'JOCSAN','CASTILLO');
INSERT INTO EMPLEADO (IDEMPLEADO,NOMBRE,APELLIDO) VALUES (10,'MONICA','ECHEVERRIA');

-- INSERTO EMAIL SIGUIENDO LA INSTRUCCIÓN DE QUE TOME LA "PRIMERA LETRA DEL NOMBRE" MÁS "EL APELLIDO COMPLETO" MÁS "@UDLA.CL" (Ésta línea de por fuente Trabajo de Daniel Parra)

UPDATE EMPLEADO SET EMAIL = SUBSTR (NOMBRE,0,1)||APELLIDO||'@UDLA.CL';

-- INSERTO DATOS EN LA TABLA CARGA

INSERT INTO CARGA VALUES (1,'DIEGO','JEREZ',2);
INSERT INTO CARGA VALUES (2,'ERWIN','MALDONADO',3);
INSERT INTO CARGA VALUES (3,'POTOVACA','SAN MARTIN',6);
INSERT INTO CARGA VALUES (4,'JESUS','OYARCE',1);
INSERT INTO CARGA VALUES (5,'RAYO MCQUEEN','PAILAMILLA',6);
INSERT INTO CARGA VALUES (6,'MARKETA','OGLOVAR',1);
INSERT INTO CARGA VALUES (7,'MONICA','ECHEVERRIA',1);


 REALIZA LA CONSULTA: CUANTAS CARGAS HAY POR EMPLEADO
 A MODO DE CORROBORAR QUE LAS RELACIONES FUNCIONAN PERFECTAMENTE

SELECT EMPLEADO.NOMBRE,EMPLEADO.APELLIDO, COUNT(CARGA.IDEMPLEADO)AS CANTIDAD_DE_CARGAS
FROM EMPLEADO
INNER JOIN CARGA ON EMPLEADO.IDEMPLEADO=CARGA.IDEMPLEADO
GROUP BY EMPLEADO.NOMBRE, EMPLEADO.APELLIDO;

ATTE, Roberto Pailamilla y Henry Gálvez

jueves, 2 de abril de 2015

Presentación

Presentación del grupo

Somos un grupo formado para el curso Tecnologías de bases de datos (ACI 800)
Sus integrantes somos:

Roberto Pailamilla











Henry Galvez