INTRODUCCIÓN A PL/SQL

Documentos relacionados
Diseño de bases de datos

Introducción a PL/SQL

Declaración de Variables. Copyright Oracle Corporation, All rights reserved.

Oracle Database 12c SQL and PLSQL Fundamentals

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

Introducción a PL/SQL

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

Introducción a Oracle PL / SQL 12c

PRÓLOGO... XI CAPÍTULO 1. FUNDAMENTOS DEL LENGUAJE PL/SQL.

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

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

Oracle PL/SQL. Programa de Estudio.

El Lenguaje SQL. Funciones en SQL

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

Oracle Database 11g: Conceptos Fundamentales de SQL y PL/SQL Nuevo

Para procesar instrucciones SELECT que devuelvan más de una fila, son necesarios cursores explicitos combinados con un estructura de bloque.

Oracle Database: Programación con PL/SQL

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

Lenguaje PL/SQL. Instrucciones de Repetición

Triggers. BASES DE DATOS Mercedes García Merayo

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

Unidad 6. Procedimientos Almacenados y Disparadores

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

Triggers 24/12/2016. Escuela Técnica Superior de Ingeniería Informática Departamento de Lenguajes y Sistemas Informáticos. Triggers en Oracle

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

A. Introducción. B. Los DATABASES TRIGGERS. PL/SQL en objetos de la base de datos. Oracle 11g - SQL, PL/SQL, SQL*Plus 271

PRÓLOGO... XI CAPÍTULO 1. FUNDAMENTOS DEL LENGUAJE PL/SQL.

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

ORACLE 11g &12c Developer PLSQL

PL/SQL avanzado: Secuencias, triggers, cursores y subprogramas

Manual de Sentencias Básicas en SQL

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

Manual Aprendiendo Practicando Oracle SQL (Spanish Edition) Click here if your download doesn"t start automatically

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

Oracle Database: Conceptos Básicos de SQL y PL/SQL

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

PL SQL -Oracle. Índice. Miguel Ángel Manso ETSI en Topografía, Geodesia y Cartografía - UPM. Qué es PL/SQL? Qué permite?

Informática. JavaScript: Lenguaje de programación. Fco J. Martín Mateos Carmen Graciani

El SQL es un lenguaje estándar de programación para el acceso a bases de datos.

Uso de sentencias para el envió y extracción de datos

Manual de desarrollo en PL/SQL

Utilizar la cláusula RETURNS es obligatorio al momento de definir una función y sirve para especificar el tipo de dato que será devuelto.

Modelamiento y Gestión de Base de Datos

FUNDAMENTOS DE INFORMÁTICA

Funciones a Nivel de Fila. Copyright Oracle Corporation, All rights reserved.

Triggers (o disparadores) Definición y sintaxis

Introducción a SQL (DDL)

Fundamentos de Programación

GUÍA DE TRABAJO N 5 GRADO 11 Programación y Diseño de Articulación SENA Software Ing. Néstor Raúl Suarez Perpiñan Página 1 de 6

GUÍA DE TRABAJO N 7 GRADO 11. Ing. Néstor Raúl Suarez Perpiñan Página 1 de 6 GUIA N 7 COMANDOS MYSQL II. CREAR UNA TABLA

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

Tema II: El modelo relacional de datos. (2.7) Automatización

Informática General 2016 Cátedra: Valeria Drelichman, Pedro Paleo, Leonardo Nadel, Norma Morales

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Programación en Visual Basic Ricardo Rodríguez García

LENGUAJE DE CONSULTA ESTRUCTURADO (SQL)

Apunte Laboratorio ALPI - El lenguaje de programación Pascal

Diseño de bases de datos

Modelamiento y Diseño de Base de Datos

4. Operadores Operador asignación

PHP y MySQL Domine el desarrollo de un sitio Web dinámico e interactivo (3ª edición)

Tema 1 INTRODUCCIÓN A LOS LENGUAJES DE PROGRAMACIÓN

Operadores. Java es un lenguaje rico en operadores, que son casi idénticos a los de C/C++.

FUNDAMENTOS DE INFORMÁTICA

Desarrollo de Aplicaciones Informáticas

SQL Sintaxis. Ejemplo de Alumno, Curso, Profesor. Esquemas de Alumno, Curso, Profesor. Andrés Moreno S.

Oracle Database: Introducción a SQL

Procedimientos almacenados y Triggers

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

Administración Base de Datos SQL

Índice general 7. Presentación 15

Introducción 1 Recuperación de Datos mediante la Sentencia SQL SELECT

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

EXAMEN: BASES DE DATOS 4º Ingeniería Informática (31 de enero de 2008)

FUNDAMENTOS ORACLE 12C

Introducción a Transact-SQL

Tema: DISPARADORES (TRIGGERS)

Examen de Ficheros y bases de datos Convocatoria de junio II PARCIAL

SQL Sintaxis. OpenOffice. Ejemplo de Alumno, Curso, Profesor. Ejemplo de Alumno, Curso, Profesor. Andrés Moreno S. Nombre. Apellido. RutAlumno.

Java Avanzado. Guía 1. Java Avanzado Facultad de Ingeniería. Escuela de computación.

FUNDAMENTOS DE OBJECT PASCAL

Operadores. Además se pueden emplear en sentencias SET.

Funciones, procedimientos y cursores en Oracle

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

Transcripción:

PRÁCTICA: 8. INTRODUCCIÓN A PLSQL OBJETIVOS: Conocer los fundamentos básicos de PLSQL y aprender los componentes principales de un bloque PLSQL. MATERIAL: ORACLE 9i versión para WINDOWS XP BIBLIOGRAFIA: ORACLE: Introduction to ORACLE 9i: PLSQL. Student Guide. 2001. O REILLY: ORACLE PLSQL Programming 2 nd Edition. 2000. PRACTICA 8. Introducción a PLSQL 1

CONTENIDO: 1. Introducción 2. Variables 2.1. Declaración de variables 2.2. Asignación de valores a variables 2.3. Atributo %TYPE 2.4. Variables BOOLEANAS 3. Órdenes ejecutables PLSQL 3.1. Comentarios PLSQL 3.2. Funciones PLSQL 3.3. Conversión de tipos 3.4. Operadores 4. EntradaSalida 4.1. Entrada de datos 4.2. Salida de datos 5. Órdenes SQL en PLSQL 5.1. SELECT 5.2. INSERT, DELETE, UPDATE 6. Estructuras de control 6.1. IF-THEN-ELSE 6.2. LOOP 6.3. FOR 6.4. WHILE Después de completar esta práctica, el alumno debería ser capaz de: - Escribir bloques PLSQL - Manejar instrucciones SQL dentro de bloques PLSQL. Esquema de Trabajo Los ejemplos mostrados en esta práctica están basados en el siguiente esquema relacional: Empleados (id, apellidos, nombre, salario, dep, fecha_alta, email) Departamentos (num, nombre, edificio) Empleados.dep -> Departamentos PRACTICA 8. Introducción a PLSQL 2

1. Introducción PLSQL es un lenguaje de programación estructurado. Es un lenguaje procedimental que amplía la funcionalidad de SQL, añadiendo estructuras habituales en otros lenguajes de programación, entre las que se encuentran: Variables y Tipos Estructuras de control Procedimientos y Funciones Tipos de Objetos y Métodos. La unidad básica en PLSQL es el bloque. Todos los programas PLSQL están compuestos por bloques que pueden estar anidados. Un bloque PLSQL está compuesto de tres partes principales: sección declarativa (opcional). Contiene las variables, constantes... sección ejecutable (obligatoria). Contiene órdenes SQL para manipular datos de la base de datos y órdenes PLSQL para manipular los datos del bloque sección de excepciones (opcional). Especifica las acciones a realizar en caso de error o cuando se producen excepciones en la ejecución. La estructura general es: [ variables, constantes, excepciones de usuario...] órdenes SQL órdenes PLSQL [EXCEPTION acciones a realizar al ocurrir un error] Para ejecutar un bloque PLSQL siempre hay que colocar al final la barra. Podemos crear diferentes tipos de bloques: Bloques anónimos: Se construyen de forma dinámica y se suelen ejecutar una sola vez. Bloques nominados: Igual que los anónimos pero con una etiqueta que les da nombre. Subprogramas: Procedimientos, paquetes y funciones, almacenados en la base de datos y que se ejecutan en múltiples ocasiones. Los subprogramas se ejecutarán mediante una llamada. PRACTICA 8. Introducción a PLSQL 3

Disparadores ( Triggers ): Bloques nominados que se almacenan en la base de datos y que se ejecutan ante algún suceso. Para poner nombre a un bloque se le pone una etiqueta antes del encerrado por <<...>>. Por ejemplo para darle el nombre Mi_Bloque a un bloque PLSQL pondríamos: <<Mi_Bloque>> 2. Variables Las variables se definen en la sección declarativa de los bloques PLSQL dónde también pueden inicializarse. La asignación de nuevos valores a las variables puede hacerse en la parte ejecutable del bloque. Pueden utilizarse para pasar valores como argumentos a subprogramas. Estas podrán ser de tipo IN (variable de entrada, OUT, variable de salida o INOUT, variable de entradasalida). También podrán utilizarse para almacenar valores devueltos o requeridos por una orden SQL. Todas las variables tienen un tipo. Los posibles tipos de una variable son: Escalar. Almacenan un valor único. Son los mismos que los de las columnas de las tablas (VARCHAR2, NUMBER, DATE, CHAR, LONG, LONG_RAW, BINARY_INTEGER, LAW_INTEGER) más el BOOLEAN Compuesto. Grupos de datos: tablas PLSQL, registros... Puntero. Designan elementos de otros programas. LOB (Large OBjects). Almacenan gran cantidad de información. Las variables de tipo LOB permiten almacenar datos no estructurados (imágenes, texto...) de hasta 4 GB de tamaño PRACTICA 8. Introducción a PLSQL 4

2.1.Declaración de variables <identificador> [CONSTANT] <tipo_de_dato> [NOT NULL] [{:= DEFAULT <expresión>}]; fecha DATE; dep_num NUMBER(2) NOT NULL := 10; ciudad VARCHAR2(10) := Ciudad Real ; Km_a_milla CONSTANT NUMBER := 1.4; Las variables declaradas como NOT NULL siempre deben ser inicializadas. La inicialización puede hacerse utilizando := o la palabra reservada DEFAULT. Si una variable no se inicializa contendrá el valor NULL. Las constantes deben ser inicializadas. 2.2. Asignación de valores a variables <identificador> := <valor>; 2.3. Atributo %TYPE El atributo %TYPE se utiliza para declarar una variable con el mismo tipo que una columna de una tabla o que otra variable definida anteriormente. <identificador> {<tabla>.<columna> <nombre_variable>}%type; var_nombre Empleados.nombre%TYPE; balance NUMBER; balance_minimo balance%type := 10; PRACTICA 8. Introducción a PLSQL 5

2.4.Variables BOOLEANAS Las variable BOOLEANAS pueden tomar el valor TRUE, FALSE o NULL. Las variables pueden combinarse mediante operadores lógicos (NOT, AND, OR). Las expresiones pueden devolver valores BOOLEANOS utilizando operadores relacionales (<, <=...). 3. Órdenes Ejecutables 3.1. Comentarios en PLSQL Pueden añadirse comentarios al código. Estos comentarios pueden ser especificados con: *comentario más comentario * -- comentario de línea 3.2. Funciones PLSQL Las funciones utilizables en SQL (LOWER, UPPER, INITCAP, CANCAT, SUBSTR, LENGTH, ROUND, TRUNC, MOD, MONTHS_BETWEEN, ADD_MONTHS, NEXT_DAY, LAST_DAY) excepto las de agrupamiento (ya que estas se aplican sobre una columna de una tabla). 3.3. Conversión de tipos Existen funciones de conversión de tipos: TO_CHAR, TO_DATE, TO_NUMBER TO_CHAR (<valor>, <formato>) TO_DATE(<valor>, <formato>) TO_NUMBER(<valor>, <formato>) 3.4.Operadores Los operadores en PLSQL son los mismos que para SQL: Aritméticos, Concatenación, Paréntesis. Y además, existe el operador exponencial (**). Lógicos, PRACTICA 8. Introducción a PLSQL 6

4. EntradaSalida Los programas PLSQL suelen realizar operaciones específicas sin interactuar con el operador. Sin embargo, existen algunas funciones que nos pueden ayudar a depurar programas y a interactuar con el usuario mostrando datos por pantalla y pidiendo datos al usuario. 4.1. Salida de datos Para mostrar una cadena por pantalla podemos utilizar: DBMS_OUTPUT.PUT_LINE(<cadena de caracteres>); Si los datos a mostrar no son cadenas puede utilizarse la function TO_CHAR() para transformarlo, y el operador para concatenar. El paquete DBMS_OUTPUT implementa una cola, en la cual se van almacenando los mensajes de salida. Si queremos que los mensajes aparezcan por pantallas tenemos que activar la opción SERVEROUTPUT: SET ServerOutput ON; 4.2. Entrada de datos Cuando trabajamos pidiendo datos al usuario es habitual especificar la opción SET VERIFY OFF para evitar que el sistema nos muestre el valor que tenía la variable antes y que nos confirme el nuevo valor que toma. Para pedir datos al usuario se utiliza una variable de substitución, dentro del código fuente del bloque PLSQL, si esta variable no está inicializada, se le pedirá el valor al usuario: SET ServerOutput ON; SET VERIFY OFF; vv NUMBER :=&v; DBMS_OUTPUT.PUT_LINE('Valor de v: ' vv); PRACTICA 8. Introducción a PLSQL 7

5. Órdenes SQL en PLSQL Podemos utilizar instrucciones SQL dentro de los bloques PLSQL para recuperar datos de la base de datos o para actualizar los datos que contiene. 5.1. SELECT SELECT <lista> INTO {<variable>[, <variable>,...] <registro>} FROM <tabla> WHERE <condición>; El SELECT almacenará los valores que obtenga en las variables indicadas tras INTO y en el mismo orden. Es obligatorio incluir la cláusula INTO. El SELECT debe prepararse para que sólo devuelva una fila. v_apellidos VARCHAR2(50); v_nombre VARCHAR2(30); SELECT apellidos, nombre INTO v_apellidos, v_nombre FROM Empleados WHERE id= 5 ; 5.2. INSERT, UPDATE, DELETE La sintaxis no varía: INSERT INTO tabla VALUES(...); UPDATE tabla SET valor = expresión WHERE condición; DELETE FROM tabla WHERE condición; PRACTICA 8. Introducción a PLSQL 8

La única novedad es que en las expresiones y en las condiciones podemos utilizar variables PLSQL. 6. Estructuras de control 6.1. Orden IF El funcionamiento de la estructura IF es el habitual. Su Sintaxis es la siguiente: IF <expresión1> THEN <Secuencia_ordenes1>; [ELSIF <expresión2> THEN <Secuencia_ordenes2>;]. [ELSE <Secuencia_ordenesN>;] END IF; SET ServerOutput ON; SET VERIFY OFF; v_num NUMBER := &v; IF v_num < 50 THEN DBMS_OUTPUT.PUT_LINE('Valor pequeño'); ELSIF v_num < 100 THEN DBMS_OUTPUT.PUT_LINE('Valor mediano'); ELSE DBMS_OUTPUT.PUT_LINE('Valor grande'); END IF; PRACTICA 8. Introducción a PLSQL 9

6.2. Orden LOOP Los bucles LOOP son bucles que se ejecutan siempre, para salir de ellos tendremos que poner una instrucción de salida dentro del bucle. Su Sintaxis es: LOOP [EXIT WHEN <condición>] END LOOP; SET ServerOutput ON; SET VERIFY OFF; num NUMBER :=1; LOOP DBMS_OUTPUT.PUT_LINE('Valor: ' num); num := num +1; EXIT WHEN num > 10; END LOOP; 6.3.Órden FOR Los bucles FOR se repiten un número determinado de veces. FOR <contador> IN <min>..<max> [REVERSE] LOOP... END LOOP; SET ServerOutput ON; SET VERIFY OFF; num NUMBER; FOR num IN 1..10 LOOP DBMS_OUTPUT.PUT_LINE('Valor: ' num); END LOOP; PRACTICA 8. Introducción a PLSQL 10

6.4.Órden WHILE Los bucles WHILE son iguales que en otro lenguajes de programación. WHILE <condicion> LOOP... END LOOP; SET ServerOutput ON; SET VERIFY OFF; num NUMBER:=1; WHILE num <=10 LOOP DBMS_OUTPUT.PUT_LINE('Valor: ' num); num := num + 1; END LOOP; PRACTICA 8. Introducción a PLSQL 11

EJERCICIOS PRÁCTICA 8 INTRODUCCION A PLSQL Para realizar estos ejercicios es necesario recordar la estructura del esquema de la base de datos ACADEM empleada en prácticas anteriores: DEPARTAMENTOS (codigo, nombre) AREAS (codigo, nombre, departamento) PROFESORES (codigo, apellido1, apellido2, nombre_pila, activo, categoria, dedicacion, area) ASIGNATURAS (siglas, nombre, creditos, curso, anualidad, clase, horas_teoria, horas_practica, grupos_teoria, grupos_practica, alumnos) LOCALES (codigo, nombre, docente, capacidad, edificio, situacion) GRUPOS (curso, clase, codigo, nombre) DOCENCIA (id, curso, clase, grupo, siglas, profesor, local, dia, hora, periodicidad) areas.departamento departamentos profesores.area areas docencia.curso, clase, grupo grupos docencia.profesor profesores docencia.local locales docencia.siglas asignaturas 1. Escribir un bloque PLSQL que calcule la media de dos números dados por el usuario. 2. Escribir un bloque PLSQL que pida dos identificadores de profesores y determine cual de los dos está más cerca de cero o si son iguales 3. Escribir un bloque PLSQL que convierta una determinada cantidad expresada en segundos a horas, minutos y segundos. 4. Mostrar el contenido de una variable que contenga la capacidad total de todas las aulas del edificio de Informática (EUI) 5. Insertar una fila en la tabla local con la capacidad total de los espacios de magisterio ( EGB ) (poner como nombre de edificio TOT, inventarse el contenido del resto de las columnas). Obtener la capacidad máxima de entre todas las clases del edificio de Informática ( EUI ). Restar, de la capacidad de la fila insertada, el último valor obtenido actualizar la fila correspondiente en la tabla. Eliminar las filas del edificio TOT. PRACTICA 8. Introducción a PLSQL 12