Procedimientos Almacenados Funciones Agregadas

Slides:



Advertisements
Presentaciones similares
SQL Sigla del nombre “Structured Query Language”.
Advertisements

integridad referencial
Base de Datos Orientada a Objetos (OODBMS)
Introducción a Transact-SQL
UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA
Marzo de 2010Dos Ideas - La visión de Sistemas desde el Desarrollo Introducción a PL/SQL Conceptos básicos.
SQL G r u p o
Presentación Asignatura POF030 Semana 1. Contenido En forma general, los conceptos que se estudiarán en la asignatura son: – Procedures – Functions –
Subprogramas: Procedimientos
Maestría en Bioinformática Bases de Datos y Sistemas de Información Otros objetos de Base de Datos Ing. Alfonso Vicente, PMP
EL LENGUAJE ESTÁNDAR SQL
PL/SQL Francisco Moreno Universidad Nacional.
PL/SQL Francisco Moreno Universidad Nacional.
UNITA - IBARRA BLOQUES PL-SQL SUBPROGRAMAS Paulina Guevara.
Características Objeto Relacionales en Oracle
Diseño Físico Procedimientos Almacenados y Disparadores (Triggers)
Unidad 3 Lenguaje SQL Contenidos Que es SQL ? Estructura de SQL
PL/SQL Francisco Moreno Universidad Nacional.
SQL SERVER APLICADO (SSA010) Ariel Alexis Fierro Sáez DuocUC.
SESIÓN 2. Completados por el tipo de objeto sobre el que actúan y el objeto concreto: CREATE DATABASE mibase ; Permite crear una base de datos llamada.
Lenguaje SQL (Structured Query Language)
Universidad del Cauca – FIET – Departamento de Sistemas CAPITULO 5 Agregando Datos Usando Funciones de Grupo.
1 BD Activas: Motivación zLos SGBD convencionales son “pasivos”. Sólo ejecutan preguntas o transacciones realizadas por los usuarios o por los programas.
PL/SQL Francisco Moreno Universidad Nacional. Introducción al PL/SQL ¿Por qué PL/SQL? A pesar de que SQL tiene mecanismos de control condicional (cláusula.
Bases de Datos Relacionales
16/04/ Sesión 11 Funciones y procedimientos Ing. Ricardo Inquilla.
PL/SQL Francisco Moreno Universidad Nacional.
PL/SQL Francisco Moreno Universidad Nacional.
Subconsultas Avanzadas
Ing. Ricardo Carlos Inquilla Quispe
Bases de datos en la Web n Las bases de datos permiten almacenar de una forma estructurada y eficiente toda la información de un sitio web n Ventajas –Proporcionar.
Componentes sintácticos
UNITA - IBARRA TRIGGERS
Lenguaje Estructurado de Consultas
John Freddy Duitama M.U.de.A. Facultad de Ingeniería. Creación del esquema de Una Base de Datos. John Freddy Duitama Muñoz. Facultad de Ingeniería. U.de.A.
Universidad del Cauca – FIET – Departamento de Sistemas CAPITULO 11 Creando Vistas.
Práctica: Sistema de control de ventas y almacenaje para grandes almacenes 03/12/11.
PL/SQL Francisco Moreno Universidad Nacional.
TRIGGERS EN ORACLE 8 J. Iriarte S. España
Diseñando la arquitectura de aplicaciones empresariales. Acceso al SQL Server.- Autenticación de usuario:
SQL (Structured Query Language / Lenguaje de consulta estructurado)‏
IBD CLASE 15. SQL Lenguaje de Consultas Estruturado (SQL) ◦Lenguaje de trabajo estándard para modelo relacional ◦Componentes ◦DDL: Data Definition Language.
Mayo de 2009Dos Ideas - La visión de Sistemas desde el Desarrollo Manipulación de Datos Conceptos básicos.
Triggers(Disparadores)
LENGUAJE SQL.
Bases de Datos Sql.
John Freddy Duitama M.U.de.A. Facultad de Ingeniería. Creación del esquema de Una Base de Datos. John Freddy Duitama Muñoz. Facultad de Ingeniería. U.de.A.
LENGUAJE ESTRUCTURADO DE CONSULTAS
SQL Sigla del nombre “Structured Query Language”.
 La sentencia SELECT recupera todas las columnas o un subconjunto de ellas de una tabla. Esto afecta a todas las filas de la tabla, a menos que especifiquemos.
Consultas SQL. SQL SQL es un lenguaje de consulta estructurado (Structured Query Languague). Se utiliza para: Eliminar Modificar Consultar La base de.
MSSQL SERVER CURSO BÁSICO 1. DESCRIPCIÓN DEL CURSO. Sesión 4: Sentencia Insert,Transacciones,Insert general, Insert Select * From, Sentencia Update,Update.
DISPARADORES Y SISTEMAS DE GESTION DE BASE DE DATOS DE SQL
Marzo de 2010Dos Ideas - La visión de Sistemas desde el Desarrollo SQL en PL/SQL Conceptos básicos.
SQL es el lenguaje de comunicación entre el programa cliente y programa servidor; Oracle es un programa servidor, en el que está la base de datos propiamente.
Unidad 6. Tema 4. Lenguaje de consultas SQL
Lenguaje Estructurado de Consultas
Base de Datos I – Ing. Mary Carlota Bernal J. BASE DE DATOS I PL/SQL.
Apuntes PL-SQL Triggers II. Tipos de datos compuestos Registros PL/SQL: Son similares a un tipo struct en C o a un tipo Registro en otros 3GL. Se componen.
6 Triggers ORACLE - II Bases de datos II I-2014 Universidad del Cauca Ing. Wilson Ortega Bases de datos II I-2014 Universidad del Cauca Ing. Wilson Ortega.
Apuntes PL-SQL Triggers I.
3 Cursores ORACLE Bases de datos II I-2014 Universidad del Cauca In. Wilson Ortega Bases de datos II I-2014 Universidad del Cauca In. Wilson Ortega.
Mtr. Adrián Monge Monge Educación 2015 Maestría, Mención en Administración de Proyectos ULACITMaestría, Mención en Administración de Proyectos 2012 Licenciatura,
Bases de datos II Universidad del Cauca Ing. Wilson Ortega.
Structure Query Languaje SQL. Introducción a SQL El lenguaje de consulta estructurado (SQL) es un lenguaje de base de datos normalizado, utilizado por.
DML Transact SQL Sesión X Triggers. Duración 2 Horas.
6 Triggers ORACLE Bases de datos II I-2014 Universidad del Cauca Ing. Wilson Ortega Bases de datos II I-2014 Universidad del Cauca Ing. Wilson Ortega.
6 Copyright © 2004, Oracle. Todos los derechos reservados. Trabajar con Tipos de Dato Compuestos.
6 Triggers ORACLE - III Bases de datos II I-2014 Universidad del Cauca Ing. Wilson Ortega Bases de datos II I-2014 Universidad del Cauca Ing. Wilson Ortega.
UN DISPARADOR O TRIGGER es un procedimiento que se ejecuta cuando se cumple una condición establecida al realizar una operación. Es una rutina autónoma.
Transcripción de la presentación:

Procedimientos Almacenados Funciones Agregadas

PROCEDIMIENTOS ALMACENADOS

DEFINICIÓN Un procedimiento almacenado es un conjunto de instrucciones en PL/SQL, que pueden ser llamados usando el nombre que se le haya asignado. Estos pueden hacer referencia a tablas, vistas, a funciones definidas por el usuario, a otros procedimientos almacenados. PL/SQL (Procedural Language/Structured Query Language) es lenguaje que permite definir procedimientos utilizando sentencias SQL. Es el lenguaje de programación estructurado de las bases de datos Oracle. A un procedimiento almacenado lo podemos: Crear Borrar Ejecutar Reemplazar

SINTAXIS PARA CREACION/REEMPLAZO CREATE [OR REPLACE] PROCEDURE nombre([parámetros]) IS [zona de declaraciones] BEGIN [zona de ejecución] EXCEPTION [zona de excepciones] END nombre; Parámetros: a la hora de crear un procedimiento almacenado de Oracle, podemos declarar parámetros de diferentes tipos (NUMBER, VARCHAR, etc) y estos pueden ser de entrada (IN), salida (OUT) o incluso de entrada y salida (INOUT). IN: Se utiliza como un parámetro de entrada para el procedimiento almacenado. No se puede cambiar la información de este parámetro dentro del procedimiento. OUT: Se utiliza como parámetro de salida en el procedimiento almacenado. Se puede cambiar la información de este parámetro dentro del procedimiento. INOUT: Se utiliza como parámetro de entrada y de salida. Se puede cambiar la información de este parámetro dentro del procedimiento.

Zona de declaraciones: utilizaremos esta sección del procedimiento para declarar las variables que necesitemos utilizar en el procedimiento. Zona de ejecución: en esta sección va la lógica del procedimiento, es decir, la parte de la aplicación que se ejecutará. Zona de excepciones: se utiliza para el tratamiento de excepciones del procedimiento. EJEMPLO DE LA CREACION CREATE PROCEDURE suma(Num1 IN NUMBER, Num2 IN NUMBER, resultado OUT NUMBER) IS BEGIN resultado := Num1 + Num2; END;

SINTAXIS PARA EJECUTAR SINTAXIS PARA BORRAR DROP PROCEDURE nombre; Ejemplo: DROP PROCEDURE suma; SINTAXIS PARA EJECUTAR DECLARE variables; BEGIN llamada a los procedimientos; END; Ejemplo: DECLARE resultado int; BEGIN //Procedimiento con parámetros suma(20,30,resultado); //Procedimiento sin parámetros execute suma(); END;

TRIGGERS Un disparador define una acción que la base de datos debe llevar a cabo cuando se produce algún suceso relacionado con la misma. Los disparadores (triggers) pueden utilizarse para completar la integridad referencial, también para imponer reglas de negocio complejas o para auditar cambios en los datos. La sintaxis es: CREATE [OR REPLACE] TRIGGER <nombre_trigger> {BEFORE|AFTER} {DELETE|INSERT|UPDATE [OF col1, col2, ..., colN] [OR {DELETE|INSERT|UPDATE [OF col1, col2, ..., colN]...]} ON <nombre_tabla> [FOR EACH ROW [WHEN (<condición>)]] DECLARE   -- variables locales BEGIN   -- Sentencias [EXCEPTION]   -- Sentencias control de excepción  END <nombre_trigger>;

También podemos definir: INSERT, DELETE, UPDATE: Define qué tipo de orden DML provoca la activación del disparador. BEFORE , AFTER: Define si el disparador se activa antes o después de que se ejecute la orden. FOR EACH ROW: Los disparadores con nivel de fila se activan una vez por cada fila afectada por la orden que provocó el disparo. Los disparadores con nivel de orden se activan sólo una vez, antes o después de la orden. Los disparadores con nivel de fila se identifican por la cláusula FOR EACH ROW en la definición del disparador.. La cláusula WHEN sólo es válida para los disparadores con nivel de fila. También podemos definir: Orden de ejecución de los triggers Restricciones de los triggers Utilización :OLD y :NEW Utilización de predicados de los triggers

EJEMPLO DE TRIGGER CREATE OR REPLACE TRIGGER tr_productos_01   AFTER INSERT ON productos    FOR EACH ROW DECLARE   -- local variables BEGIN   INSERT INTO precios_productos   (co_producto, precio, fx_actualizacion)   VALUES   (:NEW.co_producto, 100, sysdate); END ; El trigger se ejecutará cuando sobre la tabla PRODUCTOS se ejecute una sentencia INSERT INSERT INTO productos (co_producto, descripción) VALUES ('000100', 'producto 000100');

ORDEN DE EJECUCIÓN DE LOS TRIGGERS Una misma tabla puede tener varios triggers. En tal caso es necesario conocer el orden en el que se van a ejecutar. Los disparadores se activan al ejecutarse la sentencia SQL. Si existe, se ejecuta el disparador de tipo BEFORE (disparador previo) con nivel de orden. Para cada fila a la que afecte la orden: Se ejecuta si existe, el disparador de tipo BEFORE con nivel de fila. Se ejecuta la propia orden. Se ejecuta si existe, el disparador de tipo AFTER (disparador posterior) con nivel de fila. RESTRICCIONES DE LOS TRIGGERS El cuerpo de un trigger es un bloque PL/SQL. Cualquier orden que sea legal en un bloque PL/SQL, es legal en el cuerpo de un disparador, con las siguientes restricciones: Un disparador no puede emitir ninguna orden de control de transacciones: COMMIT, ROLLBACK o SAVEPOINT. El disparador se activa como parte de la ejecución de la orden que provocó el disparo, y forma parte de la misma transacción que dicha orden. Cuando la orden que provoca el disparo es confirmada o cancelada, se confirma o cancela también el trabajo realizado por el disparador. Por razones idénticas, ningún procedimiento o función llamado por el disparador puede emitir órdenes de control de transacciones. El cuerpo del disparador no puede contener ninguna declaración de variables LONG o LONG RAW  

UTILIZACION DE :OLD Y :NEW Dentro del ámbito de un trigger disponemos de las variables OLD y NEW .   Estas variables se utilizan del mismo modo que cualquier otra variable PL/SQL, con la salvedad de que no es necesario declararlas, son de tipo %ROWTYPE y contienen una copia del registro antes (OLD) y después(NEW) de la acción SQL (INSERT, UPDATE, DELTE) que ha ejecutado el trigger. Utilizando esta variable podemos acceder a los datos que se están insertando, actualizando  o borrando. Acción SQL OLD NEW INSERT Todos los campos toman valor NULL. Valores que serán insertados cuando se complete la orden. UPDATE Valores originales de la fila, antes de la actualización. Nuevos valores que serán escritos cuando se complete la orden. DELETE Valores, antes del borrado de la fila. Todos los campos toman el valor NULL.

UTILIZACION DE PREDICADOS DE LOS TRIGGERS Dentro de un disparador en el que se disparan distintos tipos de órdenes DML (INSERT, UPDATE y DELETE), hay tres funciones booleanas que pueden emplearse para determinar de qué operación se trata. Estos predicados son INSERTING, UPDATING y DELETING. Tenemos entonces: INSERTING: TRUE si la orden de disparo es INSERT; FALSE en otro caso. UPDATING: TRUE si la orden de disparo es UPDATE; FALSE en otro caso.  DELETING: TRUE si la orden de disparo es DELETE; FALSE en otro caso.

FUNCIONES AGREGADAS

DEFINICION Las funciones agregadas proporcionan utilidades de cálculo sobre los datos de las tablas. Algunas son: SYSDATE  NVL  DECODE  TO_DATE  TO_CHAR  TO_NUMBER  TRUNC  LENGTH  INSTR  REPLACE  SUBSTR  UPPER  LOWER  ROWIDTOCHAR  RPAD  LPAD  RTRIM  LTRIM  TRIM  MOD AVG COLLECT(column) CORR CORR_* COUNT COVAR_POP COVAR_SAMP CUME_DIST DENSE_RANK FIRST GROUP_ID GROUPING GROUPING_ID LAST MAX MEDIAN MIN PERCENTILE_CONT PERCENTILE_DISC PERCENT_RANK RANK STATS_BINOMIAL_TEST STATS_CROSSTAB STATS_F_TEST STATS_KS_TEST STATS_MODE STATS_MW_TEST STATS_ONE_WAY_ANOVA STATS_T_TEST_* STATS_WSR_TEST STDDEV STDDEV_POP STDDEV_SAMP SUM VAR_POP VAR_SAMP VARIANCE

DEFINICION DE ALGUNAS DE LAS FUNCIONES AVG: Calcula la media de un conjunto de datos numéricos. SELECT AVG(salario) “Media" FROM scott.emp COUNT(DISTINCT expresión): Devuelve el número filas que retorna la consulta. Si se incluye la clausula DISTINCT cuenta el número de filas con distinta expresión. No se cuentan las filas con expresión a nulo. Si ponemos count(*) entonces si que se cuentan filas con campos nulos. SELECT COUNT(*) "Total" FROM scott.emp; MAX([ DISTINCT | ALL ] expresión)[OVER (analytic_clause)]: Devuelve el máximo valor de expresión. SELECT MAX(salario) “Máximo" FROM scott.emp;

SELECT MIN(salario) “Mínimo" FROM scott.emp; MIN([ DISTINCT | ALL ] expresión)[ OVER (analytic_clause)]: Devuelve el mínimo valor de expresión. SELECT MIN(salario) “Mínimo" FROM scott.emp; RANK: Calcula el ranking de un valor en un grupo de valores. Devuelve un valor numérico. Calcula el ranking de un hipotético empleado con salario 3000 respecto a la tabla de empleados. SELECT RANK(3000, .05)  WITHIN GROUP (ORDER BY salario, comm) “Ranking” FROM  scott.emp; SUM([ DISTINCT | ALL ] expresión)[ OVER (analytic_clause)]: Devuelve el sumatorio de los valores de expresión. SELECT SUM(salario) ”Total” FROM scott.emp;

GRACIAS http://www.nosolounix.com/2010/12/crear-una-funcion-en-oracle.html http://www.devjoker.com/contenidos/catss/67/Funciones-integradas-de-PLSQL.aspx https://sites.google.com/site/josepando/home/funciones-sql/funciones-agregadas