Diseño de bases de datos

Documentos relacionados
Funciones, procedimientos y cursores en Oracle

Funciones, procedimientos, secuencias y cursores en Oracle

Diseño de bases de datos

El Lenguaje PL/SQL. Un lenguaje de propósito general orientado a la inclusión de sentencias SQL. Estructura del código PL/SQL.

Oracle básico (IV): Programación en PL/SQL

SQL PROCEDURAL Triggers y Stored Procedures. Ing. Gustavo A. Correa Reina UNCPBA 2008

Procedimientos, Funciones, Trigger y Cursores en ORACLE

Tema 1. Bases de datos activas

//Sección de manejo de excepciones. Las rutinas de manejo de errores //aparecen aqui

Escuela Técnica Superior de Ingeniería Informática Departamento de Lenguajes y Sistemas Informáticos. Triggers

Oracle PL/SQL. Programa de Estudio.

Diseño de bases de datos Práctica-1 Definición de datos

GESTORES GESTORES DE BASES DE DATOS

PL/SQL. DECLARE /* Parte Declarativa */ BEGIN /* Parte de Ejecución */ EXCEPTION /* Parte de Excepciones */ END;

Triggers 27/11/2014. Escuela Técnica Superior de Ingeniería Informática Departamento de Lenguajes y Sistemas Informáticos. Triggers en Oracle

Introducción al SQL embebido

Permite definir cada relación que pertenece a la base de datos relacional, incluyendo:

El usuario puede utilizar esta tabla derivada como una tabla más, en sus consultas.

DISPARADORES EN SQL DISPARADORES EN SQL:1999 SINTAXIS GENERAL DE UN DISPARADOR EN SQL:1999 SINTAXIS GENERAL DE UN DISPARADOR EN SQL:1999

Introducción al lenguaje PL/SQL

Procedimientos almacenados en PL/SQL. Jonathan Medina Gómez Facultad de Ingeniería Universidad de Antioquia

Guía de ejercicios de SQL Prof. Mauricio E. Fernández N. Semestre Agosto-Diciembre de 2012

LEA ATENTAMENTE LAS PREGUNTAS Y RESUELVA CADA EJERCICIO COMO SE INDIQUE (EN CASO CONTRARIO EL EJERCICIO NO PUNTUARÁ) CADA EJERCICIO VALE UN PUNTO

Ejemplo de gestión de datos con SQL

Gestión de nóminas diciembre 2011

PL/SQL. Con PL/SQL vamos a poder programar las unidades de programa de la base de datos Oracle:

APUNTES: APLICACIONES WEB BASADAS EN PHP Y MYSQL Página 1 de 5

APÉNDICE SQL (Structures Query Language)

Access SQL: DDL y DML. Una empresa de Ingeniería precisa una base de datos para la gestión de sus proyectos.

Tema: Procedimientos almacenados y cursores. Facultad : Ingeniería Escuela : Computación Asignatura: SQL SERVER. GUÍA 2 Pág. 1

Práctica 4: Estudio del SGBD Oracle 10 Gestión de Transacciones

Bases de Datos / Elementos de Bases de Datos Que es un Stored Procedure? Stored Procedures: Ventajas

1. Introducción al PL/SQL 2. Conceptos Básicos de PL/SQL Estructura de Bloques Reglas y Convenciones del Lenguaje

Práctica Consultas SQL DML

SQL (Structured Query Language)

LENGUAJE SQL. En Mysql se utiliza un subconjunto de SQL (update, insert into, delete, select, truncate,etc).

EJEMPLOS PRÁCTICOS SQL

Bases de datos relacionales y el modelo entidad-relación

Ampliación de Bases de Datos Práctica 1: El lenguaje PL/SQL de Oracle Sesión 1: Introducción al PL/SQL

Interacción con el Servidor Oracle8. Copyright Oracle Corporation, All rights reserved.

RICHARD ALEXANDER BETANCUR SIERRA

Los disparadores pueden ser utilizados para cumplir con alguna de las siguientes tareas:

Repaso. Laboratorio Informix. Stored Procedures. Ejemplo. Creación de stored procedures. Sql en un Procedimiento

Laboratorio Informix. Stored Procedures Triggers

Disparadores en Oracle (Ejemplos Prácticos)

Tema 4. SQL. Juan Ignacio Rodríguez de León

Tema 4. Manipulación de datos con SQL

Procesamiento y Optimización de consultas Material Preliminar en preparación

Bases de Datos / Elementos de Bases de Datos 2015

ÍNDICE INTRODUCCIÓN...13

FUNDAMENTOS DE INFORMÁTICA

Unidad. Lenguaje SQL. (Structured Query Language)

PRÁCTICA III. DISPARADORES EN SQL (II)

Bases de Datos SQL 1 SQL. Jorge Pérez R. Universidad de Talca, II Semestre 2006

SQL EMBEBIDO FELIPE GARCÍA GÓMEZ

Temario. Índices simples Árboles B Hashing

UNIDAD DE TRABAJO 3: PROGRAMACIÓN DE BASES DE DATOS TEMA 8: INTRODUCCIÓN AL LENGUAJE DE PROGRAMACIÓN

FIREBIRD: SQL PROCEDIMENTAL (PSQL)

Examen de Bases de datos Grado de Ingeniería en Informática 3 de septiembre, 2015

Diseño de bases de datos

SQL Embebido. Introducción (I)

Programación SQL. Lucio Salgado Diciembre 2008

LENGUAJE DE CONSULTA ESTRUCTURADO (SQL)

Tema 33. El lenguaje SQL

Bases de Datos 2. Teórico

Lic. Vladimir Cotaquispe Gutierrez PROGRAMACIÓN PL/SQL I - 1. Copyright 2008, Oracle. All rights reserved.

Restricciones de Integridad

Desarrollo Cobol/DB2

BASES DE DATOS OBJETO-RELACIONALES

6. PROGRAMACIÓN CON TRANSACT-SQL

PG/PLSQL. Miguel Ángel Manso ETSI en Topografía, Geodesia y Cartografía - UPM

BASE DE DATOS TIPOS DE DATOS, VARIABLES, OPERADORES Y CONTROLES EN SQL SERVER

Bases de Datos: Structured Query Language (SQL)

Sistemas Gestores de Bases de Datos Tema 8: Fundamentos de PL/SQL

EXAMEN TEMAS 3, 4 y 5. CREACIÓN Y EXPLOTACIÓN DE UNA BASE DE DATOS

Primera Escuela de la Red Temática SVO. Madrid, Noviembre, 27 28, SQL básico. Carlos Rodrigo Blanco LAEFF INTA

SUBPROGRAMAS PL/SQL César Martínez C. Profesor Instructor de Base de Datos Sede Puente Alto DUOC

ANÁLISIS TEÓRICO/PRÁCTICO DE LA TRADUCCIÓN DE: INFORMIX-4GL A JAVA ÁNGEL SUÁREZ GARCÍA JUNIO DE 2008

Haga clic para PostgreS cambiar el estilo

BASES DE DATOS TEMA 4. SQL. UN LENGUAJE DE CONSULTA COMERCIAL PARA BASES DE DATOS RELACIONALES Contenidos generales

Bases de Datos Ejercicios de SQL

Desarrollo de Aplicaciones Informáticas

Sistemas Informáticos I Resumen

Structured Query Language (SQL) Fundamentos de Bases de Datos InCo

TEMA. Sistema de Gestión de Bases de Datos. Sistemas Avanzados de Recuperación de Información (SARI)

Maestría en Bioinformática. Bases de Datos y Sistemas de Información SQL: DML. Ing. Alfonso Vicente, PMP

E16 - Diseño de Sistemas de Bases de Datos Boletín 3

SQL. Orígenes y Evolución

Para ver una copia completa de la licencia, acudir a la dirección

Sistemas de Datos Curso: Ernesto Chinkes. Subconsultas Stored Procedures - Triggers

Triggers en PL/SQL. Jonathan Medina Gómez Facultad de Ingeniería Universidad de Antioquia

ejemplos de SQL (Oracle 8)

Oracle Database: Programación con PL/SQL

Diseño e Implementación de Bases de Datos

DESCRIPCIÓN ESPECÍFICA NÚCLEO: Núcleo Sector Comercio y Servicios.

PL/PGSQL. Extensión "procedural" de SQL

Lenguaje para descripción de datos

GUIA DE PROCEDIMIENTOS Y FUNCIONES ALMACENADOS EN MYSQL

El Lenguaje SQL TEMA V. Grupo de Bas ses de Datos Avanzadas Univ. Carlo os III de Madrid. V.1 SQL como Lenguaje de Definición de Datos

TEMA 8. CONSTRUCCIÓN DE GUIONES DE ADMINISTRACIÓN

Transcripción:

Departamento de Lenguajes y Sistemas Informáticos E.T.S. Ingeniería Informática. Universidad de Sevilla Avda Reina Mercedes s/n. 41012 Sevilla Tlf/Fax 954 557 139 E-mail lsi@lsi.us.es Web www.lsi.us.es Diseño de Bases de Datos e.t.s. ingeniería informática Diseño de bases de datos Práctica-4 Sevilla, noviembre 2007 V 2007.11.1

Indice 1 INTRODUCCIÓN 3 2 OPERACIONES CON CURSORES 3 2.1 ATRIBUTOS... 4 2.2 EJEMPLO DE CURSOR. 4 EJERCICIO 5 Pág. 2 de 6

1 Introducción. La utilización de cursores es necesaria cuando: Se necesita tratamiento fila a fila. En sentencias SELECT que devuelven más de una fila. 2 Operaciones con cursores. Declare. El cursor debe ser declarado, en la zona declare, antes de usarlo. Debe tener un nombre y se le asocia a una consulta determinada. Open. Fetch. Abre el cursor y lo inicializa para que devuelva las filas. Ejecuta la consulta asociada al cursor. Devuelve la siguiente fila en el conjunto activo. Los datos devueltos se almacenan en variables de control o en un registro. FETCH INTO CURSOR cursor_1 IS SELECT nombre, número, salario FROM emp ORDER BY salario; w_nombre emp.nombre%type; w_número emp.número%type; w_salar io emp.salario%type; OPEN cursor_1; FETCH cursor_1 INTO w_nombre, w_número, w_salario; Los registros pueden ser declarados basados en el cursor: <nombre_cursor>%type CURSOR cursor_1 IS SELECT w_registro cursor_1%rowtype; OPEN cursor_1; FETCH cursor_1 INTO w_registro; Close. Desactiva el cursor. CLOSE cursor_1; Pág. 3 de 6

Bucle de cursor FOR. Un bucle de cursor FOR, de forma implícita declara una variable REGISTRO de tipo ROWTYPE, abre el cursor y de forma repetitiva realiza el FETCH de las filas sobre la variable registro. Por último cierra el cursor cuando todas las filas han sido procesadas. CURSOR c1 IS SELECT empno, ename FROM emp; FOR c1rec IN c1 LOOP /* De forma implícita hace OPEN y FETCH del cursor*/ 2.1 Atributos. Cada cursor definido tiene cuatro atributos a los que se puede acceder para conocer el estado del cursor. %FOUND %NOTFOUND %ROWCOUNT %ISOPEN Devuelve true si el último FETCH evaluado devuelve la siguiente fila. Devuelve true si el último FETCH evaluado no devuelve ninguna fila. Contador inicialmente a cero, que se incrementa en uno tras el FETCH de cada fila. Devuelve true si el cursor especificado está abierto. 2.2 Ejemplo de cursor. CURSOR cursor_1 registro IS SELECT nombre, salario FROM empleados; cursor_1%rowtype IF NOT (cursor_1%isopen) THEN OPEN cursor_1; ENDIF; LOOP FETCH cursor_1 INTO registro; EXIT WHEN cursor_1%notfound; CLOSE cursor_1; Pág. 4 de 6

Ejercicio. Obtener los tres empleados con más subordinados. Definición tabla SET serveroutput OFF; DROP TABLE empleados; CREATE TABLE empleados (dni char(4) PRIMARY KEY, nomemp varchar2(15), cojefe char(4), FOREIGN KEY (cojefe) references empleados); Inserta datos de ejemplo en la tabla INSERT INTO empleados VALUES ('D1','Director',null); INSERT INTO empleados VALUES ('D2','D.Comercial','D1'); INSERT INTO empleados VALUES ('D3','D.Producción','D1'); INSERT INTO empleados VALUES ('D4','Jefe Ventas','D2'); INSERT INTO empleados VALUES ('D5','Jefe Marketing','D2'); INSERT INTO empleados VALUES ('D6','Vendedor 1','D4'); INSERT INTO empleados VALUES ('D7','Vendedor 2','D4'); INSERT INTO empleados VALUES ('D8','Vendedor 3','D4'); INSERT INTO empleados VALUES ('D9','Vendedor 4','D4'); INSERT INTO empleados VALUES ('D10','Obrero 1','D3'); INSERT INTO empleados VALUES ('D11','Obrero 2','D3'); INSERT INTO empleados VALUES ('D12','Obrero 3','D3'); INSERT INTO empleados VALUES ('D13','Secretaria','D5'); Procedimientos anónimos para obtener los tres empleados con más subordinados SET SERVEROUTPUT ON wjefe CHAR(4); wcount INTEGER; CURSOR c IS SELECT cojefe,count(*) AS cuenta FROM empleados GROUP BY cojefe ORDER BY 2 DESC; fila c%rowtype; DBMS_OUTPUT.PUT_LINE('Prueba de cursor (3 superjefes) con bucle FOR'); FOR fila IN c LOOP EXIT WHEN C%ROWCOUNT >3; DBMS_OUTPUT.PUT_LINE(fila.cojefe ' ' fila.cuenta); / Pág. 5 de 6

wjefe CHAR(4); wcount INTEGER; CURSOR c IS SELECT cojefe,count(*) AS cuenta FROM empleados GROUP BY cojefe ORDER BY 2 DESC; fila c%rowtype; DBMS_OUTPUT.PUT_LINE('Prueba de cursor (3 superjefes) con Open/Fetch/Close ** BUCLE NORMAL'); OPEN c; LOOP FETCH c INTO fila; EXIT WHEN C%NOTFOUND OR c%rowcount >3; DBMS_OUTPUT.PUT_LINE(fila.cojefe ' ' fila.cuenta); CLOSE c; / wjefe CHAR(4); wcount INTEGER; CURSOR c IS SELECT cojefe,count(*) AS cuenta FROM empleados GROUP BY cojefe ORDER BY 2 DESC; fila c%rowtype; DBMS_OUTPUT.PUT_LINE('Prueba de cursor (3 superjefes) con Open/Fetch/Close ** BUCLE WHILE'); OPEN c; WHILE c%rowcount<3 LOOP FETCH c INTO fila; EXIT WHEN C%NOTFOUND; DBMS_OUTPUT.PUT_LINE(fila.cojefe ' ' fila.cuenta); CLOSE c; / Para no crear ningun objeto en la BD ROLLBACK WORK; Pág. 6 de 6