Triggers (o disparadores) Definición y sintaxis

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Triggers (o disparadores) Definición y sintaxis"

Transcripción

1 Triggers (o disparadores) Definición y sintaxis Son bloques PL/SQL almacenados asociados a una tabla que se ejecutan o disparan automáticamente cuando se producen ciertos eventos sobre la tabla (inserción, borrado o modificación de fila) Se utilizan para: Implementar restricciones complejas de seguridad o integridad. Prevenir transacciones erróneas. Gestionar réplicas remotas de la tabla, etc... Sintaxis: CREATE [OR REPLACE] TRIGGER nombretrigger {BEFORE AFTER}{DELETE INSERT UPDATE [OF <lista de columnas>}[or {BEFORE AFTER} {DELETE INSERT UPDATE [OF <lista de columnas>}] ON nombretabla [FOR EACH {STATEMENT ROW [WHEN (condicion)]}] /*a continuación iría el bloque PL/SQL */ 1

2 Triggers (o disparadores) Ejemplos Ejemplo: CREATE OR REPLACE TRIGGER audit_subida_salario AFTER UPDATE OF SALARIO ON EMPLE FOR EACH ROW BEGIN INSERT INTO auditaremple VALUES ( SUBIDA SALARIO EMPLEADO :old.emp_no); END; / El disparador audit_subida_salario, se disparará después de cada modificación de la columna salario de la tabla emple. Este disparador insertará una fila en la tabla auditaremple con el texto SUBIDA SALARIO EMPLEADO y el número del empleado al que se ha subido el salario. 2

3 Triggers (o disparadores) Elementos En los disparadores se pueden distinguir los siguientes elementos: Nombre del trigger Evento de disparo: es el suceso que producirá la ejecución del trigger. Será siempre una orden DML: INSERT, DELETE o UPDATE, en esta última se podrá especificar opcionalmente las columnas cuya modificación producirá el disparo. Se pueden especificar varios eventos de disparo para el mismo trigger utilizando la cláusula OR. En el evento de disparo se incluye el nombre de la tabla a la que el trigger quedará asociado mediante la cláusula ON seguida del nombre de la tabla. Tipo del trigger: según dos cuestiones: El momento en que se ejecuta, y que puede ser antes BEFORE o después AFTER de que se ejecuta la orden de manipulación. El nivel de disparo: A nivel de orden: el trigger se activará una sola vez para cada orden, independientemente del número de filas afectadas. Se asume por omisión, se puede opcionalmente agregar la cláusula FOR EACH STATEMENT. 3

4 Triggers (o disparadores) Elementos A nivel de fila: el trigger se activará una vez para cada fila afectada por la orden. Se incluirá la cláusula FOR EACH ROW. Restricción del trigger: la cláusula WHEN seguida de una condición restringe, además, la ejecución del trigger al cumplimiento de la condición especificada. Esta condición tiene las siguientes limitaciones: Solo se puede utilizar con trigger a nivel de fila. Se trata de una condición SQL, no PL/SQL No puede incluir una consulta a la misma tabla o a otras tablas o vistas. Cuerpo del trigger: Se trata de un bloque PL/SQL y es el código que se ejecutará cuando se cumplan las condiciones especificadas en la cabecera. 4

5 Triggers (o disparadores) Elementos Ejemplo: CREATE OR REPLACE TRIGGER audit_borrado_emple BEFORE DELETE ON EMPLE FOR EACH ROW BEGIN INSERT INTO auditaremple VALUES ( BORRADO EMPLEADO * :old.emp_no * :old.apellido * :old.dept_no); END; / Este disparador se activará cada vez que se borre un empleado, y guardará su número de empleado, apellido y departamento en una fila de la tabla auditaremple. 5

6 Triggers (o disparadores) Valores NEW y OLD Estos valores nos permiten referenciar a los valores anterior y posterior a una actualización a nivel de fila. Normalmente lo haremos mediante :old.nombrecolumna y :new.nombrecolumna, respectivamente. Consideraciones con new y old: Cuando el evento que dispara el trigger es DELETE, deberemos hacer referencia a :old.nombrecolumna, ya que el valor de new es NULL. Cuando el evento que dispara es INSERT, deberemos referirnos siempre a :new.nombrecolumna, puesto que el old no existe es NULL. Sólo con el evento UPDATE, se pueden referenciar los dos valores. Cuando queramos referenciar estos valores dentro de una restricción del trigger (en la cláusula WHEN), no utilizaremos los dos puntos Si queremos que en lugar de old y new, aparezcan otras palabras, lo indicaremos en la cláusula REFERENCING tal como aparece en el formato ampliado. Solo se puede hacer referencia a estos valores en un disparador a nivel de fila. 6

7 Triggers (o disparadores) Orden de ejecución Una misma tabla puede tener varios disparadores. El orden de disparo es : Antes de ejecutar la orden que produce el disparo, se ejecutarán los disparadores BEFORE FOR EACH STATEMENT Para cada fila afectada por la orden: 1. Se ejecutarán los disparadores BEFORE.. FOR EACH ROW 2. Se ejecuta la actualización de la fila (INSERT, UPDATE o DELETE). En este momento se bloquea la fila hasta que la transacción se confirme. 3. Se ejecutan los disparadores AFTER FOR EACH ROW. Se ejecutan los disparadores AFTER FOR EACH STATEMENT. OBSERVACIONES: Cuando se dispara un trigger, éste forma parte de la operación de actualización que lo disparó, de forma que si el trigger falla, ORACLE, dará por fallida la actualización completa. Aunque el fallo se produzca a nivel de una sola fila, ORACLE, hará un ROLLBACK de toda la actualización. En ocasiones, en lugar de asociar varios triggers a una misma tabla, se utiliza un solo trigger con varios eventos de disparo. 7

8 Triggers (o disparadores) Múltiples eventos de disparo y predicados condicionales Un mismo trigger puede ser disparado por distintos eventos. Para indicarlo, se utiliza el operador OR. En estos casos, las acciones del bloque PL/SQL dependen del tipo de evento que disparó el trigger. Oracle permite la utilización de predicados condicionales que devolverán un valor verdadero o falso para cada una de las posibles operaciones. INSERTING TRUE si el que disparó el trigger fue un comando INSERT. DELETING TRUE si el que disparó el trigger fue un comando DELETE. UPDATING TRUE si el que disparó el trigger fue un comando UPDATE. UPDATING ( nombrecolumna ) TRUE si el que disparó el trigger fue un comando UPDATE y la columna especificada ha sido actualizada. 8

9 Triggers (o disparadores) Múltiples eventos de disparo y predicados condicionales Ejemplo: CREATE TRIGGER BEFORE INSERT OR UPDATE OR DELETE ON EMPLE BEGIN IF INSERTING THEN ELSIF DELETING THEN ELSIF UPDATING ( salario ) THEN END IF;. END; 9

10 Triggers (o disparadores) Restricciones El código PL/SQL del cuerpo del trigger puede contener instrucciones de consulta y de manipulación de datos, así como llamadas a otros subprogramas. Existen restricciones que se deben contemplar: El bloque PL/SQL no puede contener sentencias de control de transacciones como COMMIT, ROLLBACK o SAVEPOINT. Tampoco se pueden hacer llamadas a subprogramas que no cumplan la restricción anterior. No se pueden utilizar comandos DDL. Un trigger no puede contener instrucciones que consulten o modifiquen tablas mutantes. Una tabla mutante es aquella que está siendo modificada por una sentencia UPDATE, DELETE o INSERT en la misma sesión. No se pueden cambiar valores para las columnas que sean clave primaria, única o ajena de tablas de restricción. Una tabla de restricción es una tabla que debe ser consultada o actualizada directa o indirectamente por el comando que disparó el trigger (normalmente, debido a una restricción de integridad referencial) en la misma sesión. Los triggers a nivel de comando (FOR EACH STATEMENT) no se verán afectados por las restricciones que acabamos de enunciar para las tablas mutantes y tablas de restricción, excepto cuando el trigger se dispare como resultado de una restricción ON DELETE CASCADE. 10

11 Triggers (o disparadores) Disparadores de sustitución Son aquellos que se ejecutan no antes ni después, sino en lugar de (INSTEAD OF) la orden de manipulación que disparó el trigger. Su sintaxis: CREATE [OR REPLACE] TRIGGER nombretriger INSTEAD OF {DELETE INSERT UPDATE [OF <lista de columnas>} [OR [DELETE INSERT UPDATE [OF <lista de columnas>}].. ON nombrevista [FOR EACH ROW] /*aquí comienza el bloque PL/SQL */ [DECLARE <declaraciones>] BEGIN <acciones> [EXCEPTION <gestión de excepciones>] END; Los disparadores de sustitución tienen las siguientes características: Solamente se utilizan en triggers asociados a vistas, y son especialmente útiles para realizar operaciones de actualización complejas. Actúan siempre a nivel de fila, no a nivel de orden. Al contrario que ocurre con el resto de disparadores, la opción por omisión es FOR EACH ROW. No se puede especificar una restricción de disparo mediante la cláusula WHEN ( pero se pueden utilizar estructuras alternativas dentro del bloque PL/SQL). 11

12 Triggers (o disparadores) Ejemplo de aplicación Supongamos que disponemos de las siguiente vista: CREATE VIEW EMPLEAD AS SELECT EMP_NO, APELLIDO, OFICIO, DNOMBRE, LOC FROM EMPLE, DEPART WHERE EMPLE.DEPT_NO=DEPART. DEPT_NO; 12

13 Triggers (o disparadores) Ejemplo de aplicación Sobre la vista anterior, podemos realizar una consulta sin ningún problema, pero si intentamos realizar las siguientes operaciones, dará error porque la vista se ha creado a partir de dos tablas: SQL>DELETE FROM EMPLEAD WHERE EMP_NO=7839; SQL>INSERT INTO EMPLEAD VALUES (7999, MARTINEZ, VENDEDOR, CONTABILIDAD, SEVILLA ); SQL>UPDATE EMPLEAD SET DNOMBRE= CONTABILIDAD WHERE APELLIDO= SALA ; 13

14 Triggers (o disparadores) Ejemplo de aplicación Para realizar las operaciones de manipulación anteriores, podemos utilizar el siguiente trigger: CREATE OR REPLACE TRIGGER t_ges_emplead INSTEAD OF DELETE OR INSERT OR UPDATE ON EMPLEAD FOR EACH ROW 14

15 Triggers (o disparadores) Ejemplo de aplicación El cuerpo del trigger sería: DECLARE v_dept depart.dept_no%type; BEGIN IF DELETING THEN /* si se pretende borrar una fila */ DELETE FROM emple WHERE emp_no= : old.emp_no; ELSIF INSERTING THEN /*si se pretende insertar una fila */ SELECT dept_no INTO v_dept FROM depart WHERE depart.nombre=:new.dnombre AND loc=:new.loc; INSERT INTO EMPLE (emp_no, apellido, oficio, dept_no) VALUES (:new.emp_no, :new.apellido, :new.oficio, v_dept); ELSIF UPDATING ( dnombre ) THEN /* si se trata de actulizar La columna dnombre*/ SELECT dept_no INTO v_dept FROM depart WHERE dnombre =:new.dnombre; UPDATE emple SET dept_no=v_dept WHERE emp_no=:old.emp_no; ELSIF UPDATING ( oficio ) THEN /* si se pretende actualizar la columna oficio*/ UPDATE emple SET oficio=:new.oficio WHERE emp_no= :old.emp_no; ELSE RAISE_APPLICATION_ERROR(-20500, error en la actualización ); END IF; END; / 15

16 Triggers (o disparadores) Consideraciones Para crear un trigger, es necesario tener privilegios de CREATE TRIGGER, así como los correspondientes privilegios sobre la tabla o tablas y otros objetos referenciados por el trigger. Cuando un trigger se dispara trabaja con los privilegios del propietario del trigger, no con los del usuario actual. Con el nombre del trigger se puede especificar el esquema en el que queremos crear el trigger utilizando la notación de punto. Por omisión, Oracle asumirá nuestro esquema actual en el momento de crear el trigger. El privilegio CREATE ANY TRIGGER permite crear triggers en cualquier esquema. Normalmente un trigger se asocia a una tabla, pero también puede asociarse a una vista. Asimismo, la tabla o vista puede pertenecer a un esquema distinto del actual, siempre que se tengan los privilegios correspondientes; en este caso, se utilizará la notación de punto. No se puede asociar un trigger a una tabla del esquema SYS. Un trigger forma parte de la operación de actualización que lo disparó y si éste falla, Oracle dará por fallida la actualización, por tanto podemos utilizar el trigger para impedir que se realice una determinada operación. Los disparadores son una herramienta muy útil, pero su uso indiscriminado puede degradar el comportamiento de la base de datos y ser fuente de problemas. Por ello, cuando se trata de implementar restricciones de integridad, se deberán utilizar preferentemente las restricciones ya disponibles: PRIMARY KEY, FOREIGN KEY, CHECK, NOT NULL, UNIQUE, CASCADE, SET NULL, SET DEFAULT,.. 16

17 Triggers (o disparadores) Activar, desactivar, compilar y eliminar Un trigger puede estar activado o desactivado. Cuando se crea un trigger, éste está activado. Para variar este estado, activar o desactivar podemos utilizar : ALTER TRIGGER nombretriger DISABLE ALTER TRIGGER nombretriger ENABLE Para volver a compilar: ALTER TRIGGER nombretriger COMPILE Para eliminar un trigger: DROP TRIGGER nombretriger Vistas con información sobre los triggers Las vistas dba_triggers y user_triggers contienen toda la información sobre los triggers. 17

18 Registros en PL/SQL El concepto de registro en PL/SQL es igual a la mayoría de otros lenguajes. Se trata de una estructura compuesta de otras más simples, llamadas campos, que pueden ser de distintos tipos. El atributo ROWTYPE permite crear una estructura de datos idéntica a la fila de una tabla. Esta estructura de datos es un registro, pero tiene algunas limitaciones: Tanto los nombres de los campos como sus tipos quedarán determinados por los nombres y los tipos de las columnas de la tabla, sin que exista la posibilidad de variar alguno de ellos ni de excluir algunos campos o incluir otros. No se incluyen restricciones como NOT NULL ni valores por defecto. La creación de variables de registro utilizando este formato quedará condicionada a la existencia de la tabla de referencia y a sus posibles variaciones. PL/SQL permite salvar todas estas limitaciones definiendo nosotros mismos el registro: 18

19 Registros en PL/SQL 1. Definimos de forma genérica el registro: TYPE nombre_tipo IS RECORD (nombre_campo1 tipo_campo1 [[NOT NULL] {:= DEFAULT} valorinicial1], Nombre_campo2 tipo_campo2 [[NOT NULL] {:= DEFAULT} valorinicial2], ); Los tipos de campos se pueden especificar también utilizando %TYPE y %ROWTYPE. Los campos que tengan el especificador NOT NULL deben ser inicializados. 2. Se declaran las variables que se necesiten de ese tipo según el formato: nombre_variable nombre_tipo Para referirnos a la variable de registro completo, indicaremos su nombre. Para referirnos solamente a un campo, lo haremos utilizando la notación punto según el formato: nombre_variable_registro.nombre_campo Podemos usar esta notación para asignar valores como si se tratase de una variable, pero sólo lo podemos hacer sobre variables definidas sobre el mismo tipo_base, en caso contrario, aunque coincidan en tipo, longitud e incluso nombre de campo dará error. Un campo de un registro puede ser a su vez otro registro. 19

20 Registros en PL/SQL Ejemplo: DECLARE TYPE t_domicilio IS RECORD (calle VARCHAR2(30), numero SMALLINT, localidad VARCHAR2(25)); TYPE t_datospersona IS RECORD (nombre VARCHAR2(35), domicilio t_domicilio, fecha_nacimiento DATE); v_persona t_datospersona; BEGIN v_persona.nombre:= ALONSO FERNÁNDEZ, JOAQUÍN ; v_persona.domicilio.calle:= C/ Albufera ; v_persona.domicilio.numero:=14; END; 20

21 Tablas en PL/SQL Las tablas PL/SQL sirven para definir estructuras de datos similares a los arrays de cualquier otro lenguaje, es completamente distinto del concepto tabla que utilizan los SGBDR para almacenar información. Diferencias de tablas PL/SQL y arrays: Tienen dos columnas: Una es el índice o clave de tipo BINARY_INTEGER La otra es la que guardará la información, cuyo tipo deberá definir el programador. El índice no tiene que ser necesariamente secuencial, y los elementos no ocupan posiciones contiguas de memoria. No tienen una longitud predeterminada. El número de filas puede incrementarse dinámicamente. 21

22 Tablas en PL/SQL Definiciones de tipo TABLE Definimos el tipo-base de la tabla: TYPE nombre_tipo IS TABLE OF tipo_elementos [NOT NULL] INDEX BY BINARY INTEGER Nombre_tipo, es un especificador que indica el tipo base de la tabla y que posteriormente se utilizará para definir tablas. Tipo_elementos especifica el tipo de los elementos que va a contener, puede hacerse de varias formas: Indicando el tipo ( y la longitud si procede), como si fuera una columna de una tabla. Indicando nombredevariable%type Indicando nombretabla.nombrecolumna%type Declaración de variables Se pueden declarar tantas tablas de ese tipo como se desee utilizando el formato: Nombretabla nombre_tipo 22

23 Tablas en PL/SQL Utilización de variables de tabla Para referenciar a los elementos de una variable de tipo tabla, lo haremos mediante el nombre de la tabla y entre paréntesis, el número del elemento. Haremos lo mismo para introducir valores. Los elementos pueden ser utilizados como si se tratase de cualquier otra variable. Cuando los elementos de la tabla son de tipo registro utilizaremos la notación de punto según el formato: Nombretabla(numerodelemento).nombrecampo Ejemplo: DECLARE TYPE t_tabla_emple IS TABLE OF emple%rowtype INDEX BY BINARY_INTEGER; Tab_emple t_tabla_emple;.. BEGIN SELECT * INTO tab_emple(7900) WHERE emp_no=7900; DBMS_OUTPUT.PUT_LINE (tab_emple(7900).apellido); tab_emple(7900).salario:=350000;.. END; 23

24 Tablas en PL/SQL Atributos de tablas PL/SQL Los parámetros hacen referencia a valores de índice: FIRST: devuelve el valor de la clave o índice del primer elemento de la tabla. variabletabla.first LAST: devuelve el valor de la clave o índice del último elemento de la tabla. variabletabla.last Ej: FOR i IN variabletabla.first.. variabletabla.last LOOP PRIOR: devuelve el valor de la clave o índice del elemento anterior al elemento n. variabletabla.prior(n) NEXT: devuelve el valor de la clave o índice del elemento posterior al elemento n. variabletabla.next(n) Ej:.. i:= variabletabla.first WHILE i IS NOT NULL LOOP.. i:=variabletabla.next(i); END LOOP;.. COUNT: devuelve el número de filas de la tabla variabletabla.count EXISTS: devuelve TRUE si existe el elemento n, en caso contrario devuelve el valor FALSE. variabletabla.exists(n) 24

25 Tablas en PL/SQL Atributos de tablas PL/SQL DELETE: se utiliza para borrar elementos de una tabla. variabletabla.delete: borra todos los elementos de una tabla. variabletabla.delete(n): borra el elemento indicado por n. Si el valor de n es NULL, no hará nada. variabletabla.delete(n1,n2): borra las filas comprendidas entre n1 y n2, siendo n1>=n2 ( en caso contrario no hará nada) Una tabla se elimina al salir del ámbito del programa en que se creó. 25

26 Paquetes Los paquetes se utilizan para guardar subprogramas y otros objetos en la base de datos. Elementos de un paquete Especificación: contiene declaraciones públicas ( accesibles desde cualquier parte de la aplicación), de subprogramas, tipos, constantes, variables, cursores, excepciones,.. Cuerpo: Contiene los detalles de implementación y declaraciones privadas accesibles solamente desde los objetos del paquete. Creación de un paquete Creación de cabecera o especificación CREATE [OR REPLACE] PACKAGE nombredepaquete AS <declaraciones de tipos, constantes, variables, cursores, excepciones, y otros objetos públicos> <especificación de subprograma> END [nombrepaquete]; 26

27 Paquetes Creación de un paquete Una vez creada la cabecera del paquete se podrá crear el cuerpo, el cual: Incluirá el código correspondiente a las declaraciones formales realizadas en la cabecera. Podrá incluir otros objetos locales al paquete: tipos, variables, excepciones, cursores, procedimientos, funciones, Estos objetos serán accesibles únicamente desde el paquete Creación del cuerpo del paquete CREATE [OR REPLACE] PACKAGE BODY nombredepaquete AS <declaraciones de tipos, constantes, variables, cursores, excepciones, y otros objetos privados> <cuerpo de los subprograma> [BEGIN <instrucciones iniciales> END [nombrepaquete]; Se puede codificar y compilar la especificación del paquete independientemente del cuerpo. 27

28 Paquetes Ejemplo de Creación de cabecera CREATE OR REPLACE PACKAGE buscar_emple AS TYPE t_reg emple IS RECORD (num_empleado emple.emp_no%type, apellido emple.apellido%type, oficio emple.oficio%type, salario emple.salario%type, departamento emple.dept_no%type); PROCEDURE ver_por_numero (v_emp_no emple.emp_no%type); PROCEDURE ver_por_apellido (v_apellido emple.apellido%type); FUNCTION datos (v_emp_no emple.emp_no%type) RETURN t_reg_emple; END buscar_emple; / El sistema responderá con el mensaje de PAQUETE CREADO, o Aviso: paquete creado con errores de compilación, en este caso habrá que depurarlo, antes de crear el cuerpo de dicho paquete. Todos los objetos declarados en la cabecera del paquete son accesibles tanto desde el propio paquete como desde el exterior. En este ultimo caso, es necesario para utilizar cualquier objeto: Nombre_de_paquete.nombre_de_objeto. Ej: EXECUTE buscar_emple.ver_por_numero(7902); 28

29 Paquetes Ejemplo de Creación de cuerpo CREATE OR REPLACE PACKAGE BODY buscar_emple AS vg_emple t_reg_emple; PROCEDURE ver_por_numero (v_emp_no emple.emp_no%type) IS BEGIN SELECT emp_no, apellido, oficio, salario, dept_no INTO vg_emple FROM EMPLE WHERE emp_no=v_emp_no; Ver_emple; END ver_por_numero; PROCEDURE ver_por_apellido (v_apellido emple.apellido%type) IS BEGIN SELECT emp_no, apellido, oficio, salario, dept_no INTO vg_emple FROM emple WHERE apellido=v_apellido; ver_emple; END ver_por_apellido; 29

30 Paquetes FUNCTION datos (v_emp_no emple.emp_no&type) RETURN t_reg_emple IS BEGIN SELECT emp_no, apellido, oficio, salario, dept_no INTO vg_emple FROM emple WHERE emp_no=v_emp_no; RETURN vg_emple; END datos; PROCEDURE ver_emple IS BEGIN DBMS_OUTPUT.PUT_LINE (vg_emple.num_empleado * vg_emple.apellido * vg_emple.oficio * vg_emple. salario * vg_emple.departamento); END ver_emple; END buscar_emple; / No se podrá compilar el cuerpo del paquete hasta que se haya creado correctamente la cabecera. Además del código correspondiente a los subprogramas declarados en la cabecera, el cuerpo del procedimiento incluye: una variable local y un nuevo procedimiento. 30

31 Paquetes Utilización de los objetos definidos en el paquete: Desde el mismo paquete: Todos los objetos declarados en el paquete pueden ser utilizados por los demás objetos del mismo, con independencia de que hayan sido o no declarados en la especificación. No necesitan utilizar la notación de punto para referirse a los objetos del mismo paquete Desde fuera del paquete: Los subprogramas y otros objetos contenidos en el paquete son accesibles desde fuera solamente si han sido declarados en la especificación. Para ejecutar un procedimiento de un paquete desde SQL*Plus, se utiliza el formato: SQL>EXECUTE nombrepaquete. subp (listaparámetros); También se pueden utilizar los subprogramas declarados en la especificación desde otros subprogramas que se encuentren fuera del paquete. 31

32 Paquetes Declaración de cursores en paquetes: Para declarar cursores en paquetes de forma que estén accesibles en la especificación, deberemos separar la declaración del cursor del cuerpo (donde van las cláusulas SELECT). La declaración del cursor se declarará en la cabecera del paquete indicando el nombre del cursor, los parámetros (si procede) y el tipo devuelto. CREATE PACKAGE empleados_acc AS. CURSOR c1 RETURN emple%rowtype; END empleados_acc; CREATE PACKAGE BODY empleados_acc AS CURSOR c1 RETURN emple%rowtype SELECT * FROM emple WHERE salario>100000; END empleados_acc; 32

33 Paquetes Ámbito y otras características de las declaraciones: Los objetos declarados en la especificación del paquete son globales al paquete y locales al contexto. Todas las variables declaradas en la especificación del paquete mantienen su valor durante la sesión, el valor no se pierde entre las llamadas de los subprogramas. Respecto a las variables constantes y cursores declarados en un paquete: El propietario es la sesión En la sesión no se crean los objetos hasta que se referencia el paquete. Cuando se crean objetos su valor será nulo (salvo que se inicialice). Durante la sesión los valores pueden cambiarse. Al salir de la sesión los valores se pierden. Se pueden utilizar paquetes exclusivamente para declarar tipos, constantes, variables, excepciones, cursores,.. En estos casos no es necesario el cuerpo del paquete. 33

34 Paquetes Características de almacenamiento y compilación: Tanto el código fuente como el código compilado de los paquetes se almacena en la base de datos. El paquete, al igual que con los subprogramas almacenados, puede tener dos estados: Disponible (valid) No disponible (invalid) Cuando se borra o modifica algún objeto referenciado por el paquete, pasará a invalid. Paquetes suministrados por Oracle: STANDARD: se declaran tipos, excepciones, funciones,.., disponibles desde el entorno PL/SQL. DBMS_STANDARD: incluye utilidades, como el procedimiento RAISE_APLICATION_ERROR, que facilita la interacción de nuestras aplicaiones. DBMS_OUTPUT: se encuentra el procedimiento PUT_LINE. DBMS_SQL: incorpora procedimientos y funciones que permiten utilizar SQL dinámico en nuestros programas. 34

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

DISPARADORES EN SQL DISPARADORES EN SQL:1999 SINTAXIS GENERAL DE UN DISPARADOR EN SQL:1999 SINTAXIS GENERAL DE UN DISPARADOR EN SQL:1999 DISPARADORES EN SQL:1999 DISPARADORES EN SQL Modelos Avanzados de Bases de Datos Un (trigger) es un procedimiento especial que se ejecuta en respuesta a un evento específico. Ej. Al aumentar el sueldo

Más detalles

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

SUBPROGRAMAS PL/SQL César Martínez C. Profesor Instructor de Base de Datos Sede Puente Alto DUOC SUBPROGRAMAS PL/SQL César Martínez C. Profesor Instructor de Base de Datos Sede Puente Alto DUOC INTRODUCCIÓN Los subprogramas son otro tipo de bloques PL/SQL Se diferencian de los bloques anónimos porque

Más detalles

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

Escuela Técnica Superior de Ingeniería Informática Departamento de Lenguajes y Sistemas Informáticos. Triggers Triggers Grupo de Ingeniería del Software y Bases de Datos Universidad de Sevilla octubre 2011 Introducción Objetivos de la práctica Conocer qué son los y para qué se utilizan Aprender a construir Consultar

Más detalles

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

Triggers 27/11/2014. Escuela Técnica Superior de Ingeniería Informática Departamento de Lenguajes y Sistemas Informáticos. Triggers en Oracle Triggers en Oracle Grupo de Ingeniería del Software y Bases de Datos Universidad de Sevilla noviembre 2012 Introducción Objetivos de la práctica Conocer qué son los y para qué se utilizan Aprender a construir

Más detalles

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

DISPARADORES EN SQL SINTAXIS GENERAL DE UN DISPARADOR EN SQL:2003 DISPARADORES EN SQL Modelos Avanzados de Bases de Datos Curso 2004/2005 SINTAXIS GENERAL DE UN DISPARADOR EN SQL:2003 CREATE [OR REPLACE] TRIGGER nombre [temporalidad del evento] [granularidad del evento]

Más detalles

PRÁCTICA III. DISPARADORES EN SQL (II)

PRÁCTICA III. DISPARADORES EN SQL (II) PRÁCTICA III. DISPARADORES EN SQL (II) MODELOS AVANZADOS DE BASES DE DATOS CURSO 2000/2001 Objetivo Conocer mejor los disparadores en SQL. Se verá uno de los principales inconvenientes que se presentan

Más detalles

Diseño de bases de datos

Diseño de bases de datos Departamento de Lenguajes y Sistemas Informáticos E.T.S. Ingeniería Informática. Universidad de Sevilla Avda Reina Mercedes sn. 41012 Sevilla TlfFax 954 557 139 E-mail lsi@lsi.us.es Web www.lsi.us.es Diseño

Más detalles

Concepto de vista. (con ciertas limitaciones). nivel físico) Una vista es una tabla virtual (no tiene una correspondencia a

Concepto de vista. (con ciertas limitaciones). nivel físico) Una vista es una tabla virtual (no tiene una correspondencia a 2.6.1.- Concepto de vista. Una vista es una tabla derivada de otras tablas (básicas o virtuales). Una vista se caracteriza porque: Se considera que forma parte del esquema externo. Una vista es una tabla

Más detalles

Uso de Disparadores. Miguel Angel Garduño Cordova Isaac Méndez Hernández

Uso de Disparadores. Miguel Angel Garduño Cordova Isaac Méndez Hernández Reporte Uso de Disparadores Catedrático: Alumnos: Ing. María Elena Reyes Castellanos Miguel Angel Garduño Cordova Isaac Méndez Hernández Índice General Índice de tablas 2 Introducción 4 Objetivo 4 Desarrollo

Más detalles

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

//Sección de manejo de excepciones. Las rutinas de manejo de errores //aparecen aqui PL/SQL - Oracle PL/SQL (Procedural Language/SQL) es una extensión de SQL, que agrega ciertas construcciones propias de lenguajes procedimentales, obteniendose como resultado un lenguaje estructural mas

Más detalles

Unidad III. Bases de Datos

Unidad III. Bases de Datos Clase:11 1 Unidad III Bases de Datos 2 SQL. Comandos de DDL. Comandos de DML. Agenda 3 SQL Structured Query Language SQL Los comandos del SQL pueden dividirse en tres grupos: Comandos de definición de

Más detalles

Oracle PL/SQL. Programa de Estudio.

Oracle PL/SQL. Programa de Estudio. Oracle PL/SQL Programa de Estudio Oracle PL/SQL El alumno egresara del mismo con los conocimientos y destrezas necesarias para desempeñarse como desarrollador Oracle PL/SQL además de contar con los conocimientos

Más detalles

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

SQL PROCEDURAL Triggers y Stored Procedures. Ing. Gustavo A. Correa Reina UNCPBA 2008 Base de Datos I SQL PROCEDURAL Triggers y Stored Procedures Ing. Gustavo A. Correa Reina UNCPBA 2008 SQL Procedural Posibilita el uso de código procedural conjuntamente con sentencias SQL que son almacenadas

Más detalles

Introducción a PL/SQL

Introducción a PL/SQL 22/11/2016 Grupo de Ingeniería del Software y Bases de Datos Departamento de Lenguajes y Sistemas Informáticos Universidad de Sevilla Noviembre 2014 Objetivos de este tema Conocer el lenguaje procedimental

Más detalles

Disparadores en ORACLE

Disparadores en ORACLE Diseño de Bases de Datos y Seguridad de la Información PL/SQL-1 PL/SQL: lenguaje de programación estructurado en bloques Bloques: unidad mínima en PL/SQL Soportan DML y DDL Anónimos / Con nombre Disparadores

Más detalles

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

Permite definir cada relación que pertenece a la base de datos relacional, incluyendo: TEMA 7.- EL ESTANDAR SQL. El Sublenguaje de Manipulación. El Sublenguaje de Definición. El Sublenguaje de Control. El Sublenguaje Huésped. 1. El Sublenguaje de Manipulación. (Se verá en la clase de problemas)

Más detalles

Lenguaje SQL (2ª Parte) Definición de datos

Lenguaje SQL (2ª Parte) Definición de datos Lenguaje SQL (2ª Parte) Definición de datos Bases de Datos Práctica 3 DSIC - UPV Facultad de Informática Escuela Técnica Superior de Informática Aplicada Objetivos Sintaxis del Lenguaje de Definición de

Más detalles

Oracle Database: Programación con PL/SQL

Oracle Database: Programación con PL/SQL Oracle University Contact Us: 0800-100-4183 & 0800-100-6854 Oracle Database: Programación con PL/SQL Duration: 5 Days What you will learn Este curso ofrece una introducción sobre PL/SQL y enumera la lista

Más detalles

Base de Datos Oracle 10g: Programación con PL/SQL Código: D Duración: 5 días (40 horas)

Base de Datos Oracle 10g: Programación con PL/SQL Código: D Duración: 5 días (40 horas) Base de Datos Oracle 10g: Programación con PL/SQL Código: D17214 - Duración: 5 días (40 horas) Lo que aprenderá Esta clase es aplicable para los usuarios de Oracle8i, Oracle9i y Oracle Database 10g. Este

Más detalles

PRÁCTICA T2. El lenguaje procedural PL/SQL de Oracle

PRÁCTICA T2. El lenguaje procedural PL/SQL de Oracle 3º Ingeniero Técnico en Informática de Sistemas Asignatura: Fundamentos de Bases de Datos Curso: 2007/8 PRÁCTICA T2. El lenguaje procedural PL/SQL de Oracle Objetivos Conocer los conceptos y estructuras

Más detalles

ÍNDICE INTRODUCCIÓN...13

ÍNDICE INTRODUCCIÓN...13 ÍNDICE INTRODUCCIÓN...13 CAPÍTULO 1. EL MODELO RELACIONAL. LENGUAJE SQL...17 1.1 INTRODUCCIÓN AL MODELO RELACIONAL...17 1.2 RELACIONES...19 1.2.1 Definición formal de relación...21 1.2.2 Propiedades y

Más detalles

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

Triggers en PL/SQL. Jonathan Medina Gómez Facultad de Ingeniería Universidad de Antioquia Triggers en PL/SQL Jonathan Medina Gómez Facultad de Ingeniería Universidad de Antioquia Triggers (Disparadores) Los triggers son bloques PL/SQL que se ejecutan de manera implícita cuando se están manipulando

Más detalles

Tema 5. Lenguaje de Definición de Datos

Tema 5. Lenguaje de Definición de Datos Tema 5 Lenguaje de Definición de Datos Índice Tema 5 1. Creación de tablas. Restricciones 2. Consultas de creación de tablas. 3. Modificación de la estructura de una tabla. 4. Borrado de tablas. 5. Creación

Más detalles

Un ejemplo teórico de trigger podría ser éste:

Un ejemplo teórico de trigger podría ser éste: 9. TRIGGERS EN LA BASE DE DATOS Un trigger (disparador sería la traducción técnica) es un bloque PLSQL que se ejecuta implícitamente cuando ocurre un evento y pueden ser de base de datos o de aplicación.

Más detalles

Existen dos tipos de disparadores que se clasifican según la cantidad de ejecuciones a realizar:

Existen dos tipos de disparadores que se clasifican según la cantidad de ejecuciones a realizar: Trigger Un trigger(o desencadenador) es una clase especial de procedimiento almacenado que se ejecuta automáticamente cuando se produce un evento en el servidor de bases de datos. Los triggers o disparadores

Más detalles

BASES DE DATOS ACTIVAS

BASES DE DATOS ACTIVAS BASES DE DATOS ACTIVAS 1 Motivación: comportamientos activos 2 Reglas ECA 3 Disparadores (Oracle) S. Ilarri 1 1. Motivación: comportamientos activos Las BD tradicionales se consideran pasivas No pueden

Más detalles

1. Motivación: comportamientos activos. 2. Reglas ECA. Ejemplos BASES DE DATOS ACTIVAS. Las BD tradicionales se consideran pasivas

1. Motivación: comportamientos activos. 2. Reglas ECA. Ejemplos BASES DE DATOS ACTIVAS. Las BD tradicionales se consideran pasivas BASES DE DATOS ACTIVAS 1. Motivación: comportamientos activos 1 Motivación: comportamientos activos 2 Reglas ECA 3 Disparadores (Oracle) Las BD tradicionales se consideran pasivas No pueden reaccionar

Más detalles

2.6.2.- Aplicaciones de las vistas. 2.6.1.- Concepto de vista. 2.6.3.- Vistas en SQL. 2.6.3.- Vistas en SQL.

2.6.2.- Aplicaciones de las vistas. 2.6.1.- Concepto de vista. 2.6.3.- Vistas en SQL. 2.6.3.- Vistas en SQL. 2.6.1.- Concepto de vista. Una vista es una tabla derivada de otras tablas (básicas o virtuales). Una vista se caracteriza porque: Se considera que forma parte del esquema externo. Una vista es una tabla

Más detalles

Introducción a PL/SQL

Introducción a PL/SQL Introducción a PL/SQL Grupo de Ingeniería del Software y Bases de Datos Departamento de Lenguajes y Sistemas Informáticos Universidad de Sevilla noviembre 2011 Objetivos de este tema Conocer PL/SQL. PL/SQL

Más detalles

Bibliografía Oracle Database Concepts - 10g Release 2 (10.2) (Octubre 2005)

Bibliografía Oracle Database Concepts - 10g Release 2 (10.2) (Octubre 2005) Disparadores en ORACLE Bibliografía Oracle Database Concepts - 10g Release 2 (10.2) (Octubre 2005) Oracle Database Application Developer's Guide Fundamentals 10g Release 2 (10.2) (Noviembre 2005) Óscar

Más detalles

Tema 1. Bases de datos activas

Tema 1. Bases de datos activas Tema 1. Bases de datos activas Diseño de Sistemas de Bases de Datos Merche Marqués 18 de marzo de 2002 Índice 1. Introducción 1 2. El modelo evento condición acción 1 2.1. Definición y uso de disparadores

Más detalles

1. Lenguaje de Definición de Datos. 2. Lenguaje de Manipulación de. Datos. M. C. Gustavo Alfonso Gutiérrez Carreón

1. Lenguaje de Definición de Datos. 2. Lenguaje de Manipulación de. Datos. M. C. Gustavo Alfonso Gutiérrez Carreón 1. Lenguaje de Definición de Datos 2. Lenguaje de Manipulación de Datos M. C. Gustavo Alfonso Gutiérrez Carreón Los 'sistemas de gestión de bases de datos (en inglés database management system, abreviado

Más detalles

Procesamiento Condicional con Sentencias IF Procesamiento Condicional con Sentencias CASE Sentencia Loop Simple Sentencia WhileLoop Sentencia ForLoop

Procesamiento Condicional con Sentencias IF Procesamiento Condicional con Sentencias CASE Sentencia Loop Simple Sentencia WhileLoop Sentencia ForLoop 1 Introducción Objetivos del Curso Agenda Descripción del Esquema Human Resources (HR) Entornos de Desarrollo PL/SQL Disponibles en este Curso Introducción a SQL Developer Introducción a PL/SQL Visión

Más detalles

Cursores, Triggers, Indices, Transacciones, Vistas Gestión y Modelación de Datos

Cursores, Triggers, Indices, Transacciones, Vistas Gestión y Modelación de Datos Cursores, Triggers, Indices, Transacciones, Vistas Gestión y Modelación de Datos Cursores CREATE OR REPLACE FUNCTION incsalario (INTEGER) RETURNS TEXT AS ' DECLARE curemp CURSOR FOR SELECT nombres, apellidos,

Más detalles

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

UNIDAD DE TRABAJO 3: PROGRAMACIÓN DE BASES DE DATOS TEMA 8: INTRODUCCIÓN AL LENGUAJE DE PROGRAMACIÓN UNIDAD DE TRABAJO 3: PROGRAMACIÓN DE BASES DE DATOS TEMA 8: INTRODUCCIÓN AL LENGUAJE DE PROGRAMACIÓN 8.1. INTRODUCCIÓN AL SQL PROCEDIMENTAL Casi todos los grandes Sistemas Gestores de Datos incorporan

Más detalles

Integridad Referencial. Restricciones (constraints)

Integridad Referencial. Restricciones (constraints) Integridad Referencial Restricciones (constraints) Integridad de Referencial Integridad referencial: asegura la integridad entre las llaves foráneas y primarias (relaciones padre/hijo). Existen cuatro

Más detalles

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

Los disparadores pueden ser utilizados para cumplir con alguna de las siguientes tareas: Guía de Disparadores Un disparador (o trigger) es un procedimiento almacenado asociado a una tabla que se ejecuta al realizar una operación básica (INSERT, un DELETE o un UPDATE) sobre ésta. La operación

Más detalles

Modulo I: Introducción Gestores de Bases De Datos

Modulo I: Introducción Gestores de Bases De Datos Modulo I: Introducción Gestores de Bases De Datos El SQL El SQL (Lenguaje de Consulta Estructurado Structure Query Language), es un lenguaje de consulta estructurado establecido claramente como el lenguaje

Más detalles

Laboratorio Informix. Stored Procedures Triggers

Laboratorio Informix. Stored Procedures Triggers Laboratorio Informix Stored Procedures Triggers Repaso A partir del ER, hicimos las tablas de la base de datos. Creamos en MySql las base de datos y las tablas Hicimos una aplicación que se comunica con

Más detalles

GUIA 3 PARTE II. Introducción a PL/SQL

GUIA 3 PARTE II. Introducción a PL/SQL GUIA 3 PARTE II Introducción a PL/SQL PL/SQL proviene de Procedural Language (lenguaje procedural)/ Structured Query Language (Lenguaje de consulta estructurado). PL/SQL ofrece un conjunto de comandos

Más detalles

Pre-Taller Gestión de Privilegios de Usuarios 2. Manipulación de Vistas 3. Creación y manipulación de Triggers (Introducción al uso de PL/pgsql)

Pre-Taller Gestión de Privilegios de Usuarios 2. Manipulación de Vistas 3. Creación y manipulación de Triggers (Introducción al uso de PL/pgsql) BASES DE DATOS Facyt-UC Pre-Taller 2 1. Gestión de Privilegios de Usuarios 2. Manipulación de Vistas 3. Creación y manipulación de Triggers (Introducción al uso de PL/pgsql) 1. Gestión de Privilegios de

Más detalles

PL/SQL. - La unidad de programación utilizada por PL/SQL es el bloque. - Todos los programas de PL/SQL están conformados por bloques.

PL/SQL. - La unidad de programación utilizada por PL/SQL es el bloque. - Todos los programas de PL/SQL están conformados por bloques. PL/SQL - Disponible en http://www.lsi.us.es/docencia/get.php?id=5784 - Bibliografía:.Principios de Bases de Datos. Serrano, Sara Lana, Madrid E.U.I.T de Telecomunicación..Gestión de Bases de Datos. Framiñan

Más detalles

Los paquetes tienen dos partes: una especificación y un cuerpo que están almacenados por separado en la base de datos.

Los paquetes tienen dos partes: una especificación y un cuerpo que están almacenados por separado en la base de datos. 8. PAQUETES DE BASE DE DATOS Los paquetes nos van a permitir agrupar conceptos PL/SQL como pueden ser tipos, procedimientos y funciones. Por ejemplo: una paquete de Contabilidad podrá contener procedimientos

Más detalles

Enlaces relacionados: http://otn.oracle.com/tech/pl_sql/index.html

Enlaces relacionados: http://otn.oracle.com/tech/pl_sql/index.html 1.INTRODUCCION PL/SQL (Procedural Language ó Programming Language, según distintas fuentes, aunque la oficial es la primera) es el lenguaje utilizado por Oracle como extensión al SQL, y que nos va a permitir

Más detalles

Tema 1. Bases de datos activas

Tema 1. Bases de datos activas 18 de marzo de 2002 1 1. Introducción 2. El modelo evento-condición-acción Definición y uso de disparadores en Oracle Características de las reglas activas 3. Propiedades de las reglas activas 4. Aplicaciones

Más detalles

CREACIÓN, SUPRESIÓN Y MODIFICACIÓN DE TABLAS.

CREACIÓN, SUPRESIÓN Y MODIFICACIÓN DE TABLAS. CREACIÓN, SUPRESIÓN Y MODIFICACIÓN DE TABLAS. Para crear una tabla utilizamos el lenguaje DDL. El nombre de la tabla puede tener entre 1 y 30 caracteres y no puede ser una palabra reservada de oracle y

Más detalles

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

Interacción con el Servidor Oracle8. Copyright Oracle Corporation, 1998. All rights reserved. 5 Interacción con el Servidor Oracle8 Copyright Oracle Corporation, 1998. All rights reserved. Objetivos Al final de esta lección n usted podrá: Escribir correctamente una sentencia SELECT en PL/SQL Declarar

Más detalles

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

Repaso. Laboratorio Informix. Stored Procedures. Ejemplo. Creación de stored procedures. Sql en un Procedimiento Laboratorio Informix Stored Procedures Triggers Repaso A partir del ER, hicimos las tablas de la base de datos. Creamos en MySql las base de datos y las tablas Hicimos una aplicación que se comunica con

Más detalles

Departamento de Lenguajes y Sistemas Informáticos

Departamento de Lenguajes y Sistemas Informáticos Departamento de Lenguajes y Sistemas Informáticos Avda Reina Mercedes s/n. 41012 Sevilla Tlf/Fax 954 557 139 E-mail lsi@lsi.us.es www.lsi.us.es E.T.S. Ingeniería Informática Diseño de bases de datos Anexo

Más detalles

Sistemas de Bases de Datos II ITS / ITSB EMT CETP

Sistemas de Bases de Datos II ITS / ITSB EMT CETP Administración de Datos D. M. L. Data Manipulation Language Administración de Datos D. M. L. Data Manipulation Language Lenguaje de Manipulación de Datos. Administración de Datos Los comandos son los siguientes:

Más detalles

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

PL/PGSQL. Extensión procedural de SQL PL/PGSQL Extensión "procedural" de SQL Pero primero triggers DROP TABLE producto cascade; CREATE TABLE producto( id int PRIMARY KEY, vendido timestamp); DROP FUNCTION modificacion() cascade; CREATE FUNCTION

Más detalles

Integridad en sistemas de bases de datos relacionales

Integridad en sistemas de bases de datos relacionales Integridad en sistemas de bases de datos relacionales Competencias específicas a adquirir Asegurar la integridad de los datos mediante la aplicación de los mecanismos soportados por los SGBDs. Identificar

Más detalles

ÍNDICE. Introducción... Capítulo 1. Características, instalación, inicio y entorno de trabajo... 1

ÍNDICE. Introducción... Capítulo 1. Características, instalación, inicio y entorno de trabajo... 1 ÍNDICE Introducción... XI Capítulo 1. Características, instalación, inicio y entorno de trabajo... 1 Características y novedades de Access 2010... 1 Comienzo rápido del trabajo y seguimiento de la información...

Más detalles

Procedimientos, Funciones, Trigger y Cursores en ORACLE

Procedimientos, Funciones, Trigger y Cursores en ORACLE Procedimientos, Funciones, Trigger y Cursores en ORACLE PROCEDIMIENTOS ALMACENADOS Un procedimiento almacenado es un conjunto de instrucciones en PL/SQL, que pueden ser llamados usando el nombre que se

Más detalles

Conceptos básicos de programación con PL/SQL

Conceptos básicos de programación con PL/SQL Conceptos básicos de programación con PL/SQL 1. Bloques PL/SQL 2. Tipos de Datos Estructurados 3. Funciones y Procedimientos 4. Paquetes 5. Disparadores de Base de Datos 1. Bloques PL/SQL 1.1 Introducción

Más detalles

Cadena de caracteres Numéricas Fecha y hora Booleanas Tipo registro Tipo cursor

Cadena de caracteres Numéricas Fecha y hora Booleanas Tipo registro Tipo cursor Cadena de caracteres Numéricas Fecha y hora Booleanas Tipo registro Tipo cursor Declaración de variables Inicialización de variables Declaración de constantes Asignación de valores a variables Tipo Nombre_var

Más detalles

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

PL/SQL. Con PL/SQL vamos a poder programar las unidades de programa de la base de datos Oracle: PL/SQL (Procedural Language/Structured Query Language) PL/SQL es el lenguaje de programación que proporciona Oracle para extender el SQL estándar con otro tipo de instrucciones y elementos propios de los

Más detalles

SQL Los fundamentos del lenguaje

SQL Los fundamentos del lenguaje Introducción 1. Un poco de historia 11 2. Las normas SQL 12 3. Descripción rápida del modelo relacional 14 3.1 Principales conceptos del modelo relacional 15 3.2 Principales reglas 16 4. Los operadores

Más detalles

Base de Datos. Docente: Ing. Francisco Rodríguez BASE DATOS. Resultados. Internet. Requerimientos

Base de Datos. Docente: Ing. Francisco Rodríguez BASE DATOS. Resultados. Internet. Requerimientos UNIVERSIDAD NACIONAL DE TRUJILLO ESCUELA DE ING. INDUSTRIAL Base de Datos Resultados Internet Requerimientos BASE DATOS Docente: Ing. Francisco Rodríguez Base de Datos Tema 9: Procedimientos Almacenados

Más detalles

FIREBIRD: SQL PROCEDIMENTAL (PSQL)

FIREBIRD: SQL PROCEDIMENTAL (PSQL) FIREBIRD: SQL PROCEDIMENTAL (PSQL) Vicente Tejero Trueba Pag 1 IES Pedro Espinosa FIREBIRD: SQL PROCEDIMENTAL (PSQL) 1.- INTRODUCCION...1 2.- EXTENSIONES DEL LENGUAJE...2 2.1.- Terminadores...2 2.2.- Variables...3

Más detalles

Funciones y paquetes PL/SQL. Jonathan Medina Gómez Facultad de ingeniería Universidad de Antioquia

Funciones y paquetes PL/SQL. Jonathan Medina Gómez Facultad de ingeniería Universidad de Antioquia Funciones y paquetes PL/SQL Jonathan Medina Gómez Facultad de ingeniería Universidad de Antioquia Funciones Una función es un subprograma que retorna un valor simple. Las funciones se pueden invocar dentro

Más detalles

Conceptos de Bases de Datos Relacionales Triggers

Conceptos de Bases de Datos Relacionales Triggers Conceptos de Bases de Datos Relacionales Triggers Trigger Un trigger es un procedimiento almacenado asociado con una tabla, el cual se ejecuta automáticamente cuando se modifica un dato de esa tabla Stored

Más detalles

BASES de DATOS ÁCTIVAS

BASES de DATOS ÁCTIVAS BASES de DATOS ÁCTIVAS Bibliografía Piattini & Díaz (2000). Advanced Database Technology and Design. Capt. 3 Elmasri & Navathe (2000). Fundamentals of DBS, Capt. 23.1 Garcia-Molina, Ullman & Widom 2002.

Más detalles

SQL: Lenguaje de definición de datos (DDL) (*) DBMS: DATA BASE MANAGEMENT SYSTEM. SGBD: SISTEMAS GESTOR DE BASE DE DATOS

SQL: Lenguaje de definición de datos (DDL) (*) DBMS: DATA BASE MANAGEMENT SYSTEM. SGBD: SISTEMAS GESTOR DE BASE DE DATOS SQL: Lenguaje de definición de datos (DDL) (*) DBMS: DATA BASE MANAGEMENT SYSTEM. SGBD: SISTEMAS GESTOR DE BASE DE DATOS Objetivos Enseñar al alumno las sentencias que forman el lenguaje de definición

Más detalles

Checks, Triggers y Excepciones en InterBase: validando desde la base de datos

Checks, Triggers y Excepciones en InterBase: validando desde la base de datos Checks, Triggers y Excepciones en InterBase: validando desde la base de datos Por Alfonso Ricaño Bringas InterBase nos permite validar los valores que ingresan a los campos, mediante las restricciones

Más detalles

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

Lic. Vladimir Cotaquispe Gutierrez PROGRAMACIÓN PL/SQL I - 1. Copyright 2008, Oracle. All rights reserved. Lic. Vladimir Cotaquispe Gutierrez PROGRAMACIÓN PL/SQL I - 1 INTRODUCCIÓN PL/SQL: Lenguaje de programación procedimental estructurado en bloques que amplía el lenguaje estándar SQL. Permite: Manipular

Más detalles

Gestión de nóminas diciembre 2011

Gestión de nóminas diciembre 2011 Contexto del problema Una empresa ha decidido desarrollar un sistema de información cuyo objetivo principal es la gestión de las nóminas de sus empleados. Iniciado el estudio del dominio del problema,

Más detalles

Para ver una copia completa de la licencia, acudir a la dirección http://creativecommons.org/licenses/by-nc-sa/2.5/es/legalcode.

Para ver una copia completa de la licencia, acudir a la dirección http://creativecommons.org/licenses/by-nc-sa/2.5/es/legalcode. Para ver una copia completa de la licencia, acudir a la dirección http://creativecommons.org/licenses/by-nc-sa/2.5/es/legalcode.es (3) (unidad 5) PL/SQL esquema de la unidad (5.1) introducción 6 (5.1.2)

Más detalles

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

Procedimientos almacenados en PL/SQL. Jonathan Medina Gómez Facultad de Ingeniería Universidad de Antioquia Procedimientos almacenados en PL/SQL Jonathan Medina Gómez Facultad de Ingeniería Universidad de Antioquia Ventajas... Los bloques se pueden almacenar en forma permanente mediante subprogramas (funciones

Más detalles

GESTORES GESTORES DE BASES DE DATOS

GESTORES GESTORES DE BASES DE DATOS GESTORES GESTORES DE BASES DE DATOS Existen varios tipos de Sistemas gestores de bases de datos SGBD, según el modelo de datos que utilizan. Son estos: bases jerárquica, en red, relacional, y bases de

Más detalles

SQL SERVER SQL Server 2005 permite tres tipos de operaciones con conjuntos: UNION, disponible en todas las versiones de SQL Server.

SQL SERVER SQL Server 2005 permite tres tipos de operaciones con conjuntos: UNION, disponible en todas las versiones de SQL Server. SQL SERVER 2005 Operaciones con Conjuntos SQL Server 2005 permite tres tipos de operaciones con conjuntos: UNION, disponible en todas las versiones de SQL Server. EXCEPT, nuevo en SQL Server 2005. INTERSECT,

Más detalles

LENGUAJE DE CONSULTA ESTRUCTURADO (SQL)

LENGUAJE DE CONSULTA ESTRUCTURADO (SQL) Qué es una base de datos? Una base de datos (cuya abreviatura es BD) es una entidad en la cual se pueden almacenar datos de manera estructurada, con la menor redundancia posible. Diferentes programas y

Más detalles

Insertar Datos en Tablas

Insertar Datos en Tablas Insertar Datos en Tablas La instrucción básica para insertar valores a los atributos (columnas) de una tabla es la instrucción INSERT INTO Insertar una sola tupla Para insertar una tupla en la tabla, se

Más detalles

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

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 Grupo de Bases de Datos Avanzadas Univ. Carlos III de Madrid Índice V.1 Introducción V.1 SQL como Lenguaje de V.1.1 Definición del esquema V.1.2 Evolución del esquema V.2 SQL como Lenguaje de Manipulación

Más detalles

Objetivos y Temario CURSO MySQL 5

Objetivos y Temario CURSO MySQL 5 Objetivos y Temario CURSO MySQL 5 OBJETIVOS Este curso MySQL 5 se dirige a desarrolladores técnicos e ingenieros ya familiarizados con un lenguaje de programación y que desean desarrollar sus aplicaciones

Más detalles

Haga clic para PostgreS cambiar el estilo

Haga clic para PostgreS cambiar el estilo Taller # 1 Uso y Manejo l Sistema Gestor Bases Datos PostgreSQL Luis García Computación ldgarc@gmail.com Contenido - Creación Tablas (Create Table...) ( Check Foreign Keys ) - Inserción Datos (Insert Into...)

Más detalles

Programación SQL. Lucio Salgado Diciembre 2008

Programación SQL. Lucio Salgado Diciembre 2008 Programación SQL Lucio Salgado Diciembre 2008 1 Gestionadores de Bases de Datos (DBMS) Es el software que permite administrar bases de datos, a través de ella el usuario puede usar los datos con mucha

Más detalles

Oracle 12c DISEÑO Y PROGRAMACIÓN

Oracle 12c DISEÑO Y PROGRAMACIÓN Oracle 12c Se estudia el servidor de bases de datos empresarial Oracle 12c, centrándose especialmente en el punto de vista de un diseñador o programador de bases de datos, pero explicando también cómo

Más detalles

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

Examen de Bases de datos Grado de Ingeniería en Informática, Febrero, 2015 Examen de Bases de datos Grado de Ingeniería en Informática, Febrero, 2015 1) (3 puntos) El museo de la ciudad necesita gestionar las visitas guiadas de grupos y para ello se debe implementar una base

Más detalles

TIPOS COMPUESTOS. Pueden contener varios valores, a diferencia de los tipos escalares. Existen dos tipos:

TIPOS COMPUESTOS. Pueden contener varios valores, a diferencia de los tipos escalares. Existen dos tipos: TIPOS COMPUESTOS Pueden contener varios valores, a diferencia de los tipos escalares. Existen dos tipos: Registros PL/SQL : Almacenan elementos de distintos tipos (Similar a una struct en C) Colecciones

Más detalles

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

Oracle básico (IV): Programación en PL/SQL Oracle básico (IV): Programación en PL/SQL El lenguaje de programación de Oracle, llamado PL/SQL, es un lenguaje portable, procedural y de transacción muy potente y de fácil manejo, con las siguientes

Más detalles

Cursores Explícitos. Copyright Oracle Corporation, All rights reserved.

Cursores Explícitos. Copyright Oracle Corporation, All rights reserved. 8 Cursores Explícitos Copyright Oracle Corporation, 1998. All rights reserved. Objetivos Al final de esta lección, usted podrá: Distinguir entre un cursor explícito y otro implícito Utilizar una variable

Más detalles

UNIVERSIDAD NACIONAL DE SAN AGUSTÍN FACULTAD DE PRODUCCIÓN Y SERVICIOS ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMAS LABORATORIO DE BASES DE DATOS 1

UNIVERSIDAD NACIONAL DE SAN AGUSTÍN FACULTAD DE PRODUCCIÓN Y SERVICIOS ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMAS LABORATORIO DE BASES DE DATOS 1 UNIVERSIDAD NACIONAL DE SAN AGUSTÍN FACULTAD DE PRODUCCIÓN Y SERVICIOS ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEM LABORATORIO DE BES DE DATOS 1 Prof. Marco Aedo Práctica de Laboratorio Nº 6 I. OBJETIVOS

Más detalles

Introducción a PL/SQL

Introducción a PL/SQL Introducción a PL/SQL Características de PL/SQL (Procedural Language/SQL): Combina la potencia y flexibilidad de SQL con la de un lenguaje 3GL: SQL es un Lenguaje de Cuarta Generación (4GL): El lenguaje

Más detalles

Conceptos básicos de programación con PL/SQL

Conceptos básicos de programación con PL/SQL Conceptos básicos de programación con PL/SQL 1. Bloques PL/SQL 2. Tipos de Datos Estructurados 3. Funciones y Procedimientos 4. Paquetes 5. Métodos asociados a tipos de objetos 6. Disparadores de Base

Más detalles

GBD Diseño físico de DDBB

GBD Diseño físico de DDBB GBD Diseño físico de DDBB Mª Carmen Gabarrón Manual SQL de Oracle 10g http://download.oracle.com/docs/cd/b19306_01/server.102/b14200/index.htm SQL SQL es el lenguaje de consulta universal para bases de

Más detalles

VISUALIZACIÓN DE DATOS A PARTIR DE VARIAS TABLAS

VISUALIZACIÓN DE DATOS A PARTIR DE VARIAS TABLAS VISUALIZACIÓN DE DATOS A PARTIR DE VARIAS TABLAS Puede que al realizar una consulta necesitemos los datos producidos por otra consulta. Para realizar esto se pueden anidar varias sentencias select con

Más detalles

Laboratorios de BASES DE DATOS. (I.T. Informática)

Laboratorios de BASES DE DATOS. (I.T. Informática) Laboratorios de BASES DE DATOS. (I.T. Informática) Gestor de bases de datos ORACLE M. Martínez, C. Hernández, C. Cuesta Dpto. de Informática (U. Valladolid) Base de datos de ejemplo EMPLEADOS (NOMBRE,

Más detalles

Funciones, procedimientos y cursores en Oracle

Funciones, procedimientos y cursores en Oracle Funciones, procedimientos y cursores en Oracle Grupo de Ingeniería del Software y Bases de Datos Departamento de Lenguajes y Sistemas Informáticos Universidad de Sevilla Noviembre 2013 Funciones, procedimientos,

Más detalles

ÍNDICE PRIMERA PARTE... 17

ÍNDICE PRIMERA PARTE... 17 ÍNDICE PREFACIO... xv PRIMERA PARTE... 17 CAPÍTULO 1. BASES DE DATOS... 19 BASE DE DATOS RELACIONAL... 20 ESTRUCTURA MÍNIMA DE ALMACENAMIENTO... 21 EJEMPLO DE TABLA... 22 RESUMEN... 23 CAPÍTULO 2. CONSULTAS

Más detalles

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

Maestría en Bioinformática. Bases de Datos y Sistemas de Información SQL: DML. Ing. Alfonso Vicente, PMP Maestría en Bioinformática Bases de Datos y Sistemas de Información SQL: DML Ing. Alfonso Vicente, PMP alfonso.vicente@logos.com.uy Agenda DML Sentencias Modificando la instancia Agenda DML Sentencias

Más detalles

GUÍA DE TRABAJO GRADO 11. Media Fortalecida - SENA Programación de Software Ing. Néstor Raúl Suarez Perpiñan Página 1 de 6

GUÍA DE TRABAJO GRADO 11. Media Fortalecida - SENA Programación de Software Ing. Néstor Raúl Suarez Perpiñan Página 1 de 6 Página 1 de 6 Tema: VISTAS Y DESENCADENADORES (TRIGGER) EN SQL SERVER Objetivo: Adquirir los conocimientos necesarios para desarrollar e implementar vistas y desencadenadores utilizando SQL Server I. VISTAS

Más detalles

Oracle 12c SQL, PL/SQL, SQL*Plus

Oracle 12c SQL, PL/SQL, SQL*Plus Modelo relacional 1. Gestión de datos 15 1.1 Generalidades sobre los archivos 15 1.2 Organizaciones típicas de los archivos 17 2. El modelo relacional 18 2.1 Conceptos y definiciones 18 2.1.1 Dominio 19

Más detalles

Desarrollo de Aplicaciones Informáticas

Desarrollo de Aplicaciones Informáticas Desarrollo de Aplicaciones Informáticas CICLO FORMATIVO DE GRADO SUPERIOR FORMACIÓN PROFESIONAL A DISTANCIA Unidad 6 PL/SQL Programación avanzada MÓDULO Desarrollo de Aplicaciones en Entornos de Cuarta

Más detalles

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

El Lenguaje PL/SQL. Un lenguaje de propósito general orientado a la inclusión de sentencias SQL. Estructura del código PL/SQL. Un lenguaje de propósito general orientado a la inclusión de sentencias SQL Estructura del código PL/SQL. Bloques: El Lenguaje PL/SQL sentencias PL/SQL Los ficheros terminan con el caracter

Más detalles

INTRODUCCIÓN AL LENGUAJE DE PROGRAMACIÓN PL/SQL CURSORES

INTRODUCCIÓN AL LENGUAJE DE PROGRAMACIÓN PL/SQL CURSORES PREVIO 8 INTRODUCCIÓN AL LENGUAJE DE PROGRAMACIÓN PLSQL CURSORES INTRODUCCIÓN Como vimos en la práctica de procedimientos dentro de PLSQL la orden SELECT no devuelve más de una fila. Si deseamos obtener

Más detalles

TEMA 6: LENGUAJE DE DEFINICIÓN DE DATOS (LDD)

TEMA 6: LENGUAJE DE DEFINICIÓN DE DATOS (LDD) TEMA 6: LENGUAJE DE DEFINICIÓN DE DATOS (LDD 6.1 Introducción Hasta ahora hemos estudiado las sentencias que forman parte del DML (Data Management Language lenguaje de manipulación de datos, todas esas

Más detalles

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

Diseño de bases de datos Práctica-1 Definición de datos Departamento de Lenguajes y Sistemas Informáticos Avda Reina Mercedes s/n. 41012 Sevilla Tlf/Fax 954 557 139 E-mail lsi@lsi.us.es www.lsi.us.es E.T.S. Ingeniería Informática Diseño de bases de datos Práctica-1

Más detalles

Oracle 11g PL/SQL. Curso práctico de formación. Antolín Muñoz Chaparro

Oracle 11g PL/SQL. Curso práctico de formación. Antolín Muñoz Chaparro Oracle 11g PL/SQL Curso práctico de formación Antolín Muñoz Chaparro Oracle 11g PL/SQL. Curso práctico de formación Antolín Muñoz Chaparro ISBN: 978-84-939450-1-5 EAN: 9788493945015 Copyright 2012 RC Libros

Más detalles

Programando con PL/SQL en una Base de Datos Oracle

Programando con PL/SQL en una Base de Datos Oracle Programando con PLSQL en una Base de Datos Oracle Instructor: Ing. Francisco Riccio. OCA Oracle Database Administrator 10g OCP Oracle Database Administrator 10g OCP Oracle Database Administrator 11g OCA

Más detalles