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

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

Introducción a PL/SQL

Introducción a PL/SQL

Tema: PL/SQL y PROCEDIMIENTOS ALMACENADOS

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

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

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

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

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

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

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

Enlaces relacionados:

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

Oracle PL/SQL. Programa de Estudio.

Sentencias Ejecutables. Copyright Oracle Corporation, All rights reserved.

Oracle Database: Programación con PL/SQL

Introducción a SQL (DDL)

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

Procedimientos Almacenados. Miguel Angel Garduño Cordova Isaac Méndez Hernández

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

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

8.1.- FUNCIONES Y PROCEDIMIENTOS DEFINIDOS POR EL USUARIO EN TURBO PASCAL.

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

EL ENTORNO DE TRABAJO SQL ORACLE

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

ÍNDICE INTRODUCCIÓN...13

Funciones, procedimientos y cursores en Oracle

Unidad III. Bases de Datos

Modelamiento y Diseño de Base de Datos

Apunte Laboratorio ALPI - El lenguaje de programación Pascal

PRÁCTICA III. DISPARADORES EN SQL (II)

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

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

ADMINISTRACIÓN DE BASE DE DATOS

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

Tablas -SQL Curso Bases de Datos. Por Elizabeth León Guzmán, Ph.D. Profesora Ingeniería de Sistemas Grupo de Investigación MIDAS

Laboratorio de Programación III

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

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

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

GENERACIÓN DE CÓDIGO ORIENTADO A OBJETOS

Fundamentos de Programación

Objetivos de la sesión. Aplicación de consola 7/30/11. Código con que se inicia un programa en Visual C# (aplicación de consola)

Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main.

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

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

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

Triggers. Carmen Hernández Triggers y PL/SQL 2

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.

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

Tutorial MySql - 1 -

Procedimientos, Funciones, Trigger y Cursores en ORACLE

Manual de turbo pascal

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

Cadenas de caracteres

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

Los procedimientos almacenados son nuevas funcionalidades de la versión de MySQL 5.0. Un procedimiento

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

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

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

GBD Diseño físico de DDBB

1. Mensajes ocultos La lectura de datos es de teclado. Los resultados se muestran por pantalla.

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

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

4. Operadores Operador asignación

GESTORES GESTORES DE BASES DE DATOS

TEMA 4.. CONSULTA DE DATOS I.

Bases de Datos 2: Procedimientos Almacenados, Funciones y Triggers. Tecnólogo en Informática, sede Paysandú Bases de Datos 2

Desarrollo de Aplicaciones Informáticas

INTRODUCCIÓN A SQL *PLUS. Diseño de Bases de Datos y Seguridad en la Información

1 2 3 ( /! 3 ) +, 1& 3 0))) % &! ( ) +,. / & 0)))

Módulo. = Asignación = = Comp. de igualdad!= Com. de desigualdad <= Comp. menor o igual >= Comp. mayor o igual AND lógico OR lógica.

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

FUNDAMENTOS DE INFORMÁTICA

Oracle Database 11g: Programación con PL/SQL Nuevo

Un identificador le da nombre único a un elemento en un programa (Variables, procedimientos, etc.). No puede contener operadores como + - * /

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

PHP: Lenguaje de programación

GUIA DE PROCEDIMIENTOS Y FUNCIONES ALMACENADOS EN MYSQL

Administración Base de Datos SQL

abril de 2017 Desarrollo de aplicaciones en Java Tipos de datos primitivos Tipos de datos Elementos de aplicaciones simples

Ejercicio 2 DDL y DML

Fundamentos PHP. El término puntuación nos referimos a la sintaxis usada en PHP para la terminación de una línea de código (;)

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

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

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas

Elementos de un programa en C

PROCEDIMIENTOS ALMACENADOS

Diseño de bases de datos

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

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.

Manejo de Bases de Datos Mysql en Lenguaje C

Modificación de Tablas. Miguel Angel Garduño Cordova Isaac Méndez Hernández

Programación con Visual C#

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

Seleccione en el escritorio el programa Sucosoft S40 y darle doble click.

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

Lenguaje C. República Bolivariana de Venezuela Fundación Misión Sucre Aldea Fray Pedro de Agreda Introducción a la Programación III

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

Modulo I: Introducción Gestores de Bases De Datos

Transcripción:

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 procedurales (sentencias IF, bucles, asignaciones), organizado dentro de bloques (como se explica más adelante), que complementan y amplían el alcance de SQL. Construyendo bloques de programas PL/SQL PL/SQL es un lenguaje de bloques estructurados. Un bloque PL/SQL está definido por las palabras clave DECLARE,, EXCEPTION, y END, las que separan el bloque en tres secciones: 1. Declarativa: sentencias que declaran las variables, constantes y otros elementos de código, los que pueden ser utilizados dentro de ese bloque 2. Ejecutables: las sentencias que se ejecutan cuando el bloque se corre 3. El manejo de excepciones: una sección especialmente estructurada que puede utilizar para "capturar" o atrapar, cualquier excepción que se produce cuando se corre la sección ejecutable Sólo la sección ejecutable es requerida. Usted puede no declarar nada en un bloque, y no tiene que capturar las excepciones producidas en ese bloque. Un bloque en sí mismo es una instrucción ejecutable, por lo que los bloques se pueden anidar dentro de otros bloques. Ejemplos: El clásico bloque " Hola Mundo!" contiene una sección ejecutable que llama al procedimiento DBMS_OUTPUT.PUT_LINE para mostrar texto en la pantalla: DBMS_OUTPUT.put_line (' Hola Mundo!'); El bloque del siguiente ejemplo declara una variable de tipo VARCHAR2 (cadena) con una longitud máxima de 100 bytes para contener la cadena " Hola Mundo!". DBMS_OUTPUT.PUT_LINE acepta entonces la variable, en lugar de la cadena literal, para mostrar: DECLARE l_mensaje VARCHAR2 (100) := ' Hola Mundo!'; DBMS_OUTPUT.put_line (l_mensaje);

Este siguiente bloque de ejemplo agrega una sección EXCEPTION que atrapa cualquier excepción (WHEN OTHERS) que podría producirse y muestra el mensaje de error, el cual es devuelto por la función (provista por Oracle) SQLERRM (). DECLARE l_mensaje VARCHAR2 (100) := ' Hola Mundo!'; DBMS_OUTPUT.put_line (l_mensaje); EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.put_line (SQLERRM); El siguiente bloque de ejemplo muestra la habilidad de PL/SQL para anidar bloques dentro otros bloques, así como el uso del operador de concatenación ( ) con el que se unen varias cadenas. DECLARE l_mensaje VARCHAR2 (100) := ' Hola'; DECLARE l_mensaje2 VARCHAR2 (100) := l_mensaje ' Mundo!'; DBMS_OUTPUT.put_line (l_mensaje2); EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.put_line(DBMS_UTILITY.format_error_stack); Ejecución de Bloques PL/SQL Una vez que usted ha escrito un bloque de código PL/SQL, puede ejecutarlo (correrlo). Hay muchas herramientas diferentes ejecutar código PL/SQL. La más básica es el SQL*Plus, una interfaz de línea de comandos para ejecutar sentencias SQL, así como bloques PL/SQL. La figura 1 muestra un ejemplo de ejecución de mi más simple bloque " Hola Mundo!" en SQL*Plus.

Figura 1: ejecución de Hola Mundo! en SQL*Plus Lo primero que se hace después de conectarme con la base de datos a través de SQL*Plus es habilitar la salida del servidor (SET SERVEROUTPUT ON), así las llamadas a DBMS_OUTPUT.PUT_LINE dará lugar a la presentación del texto en la pantalla. Luego escribo el código que constituye mi bloque. Finalmente entro una barra (/) para indicar a SQL*Plus que ejecute este bloque. SQL*Plus entonces ejecuta el bloque y muestra " Hola Mundo!" en la pantalla. SQL*Plus es proporcionado por Oracle como una especie de mínimo común denominador ambiente donde ejecutar sentencias SQL y bloques PL/SQL. Mientras algunos desarrolladores siguen confiando exclusivamente en SQL*Plus, la mayoría utiliza un entorno de desarrollo integrado (IDE). Variables y constantes Tipos de datos* en PL/SQL: NUMBER, CHAR, VARCHAR/VARCHAR2, DATE, BOOLEAN, entre otros. La sintaxis para declarar variables o constantes es: * NUMBER, CHAR,VARCHAR/VARCHAR2 tienen precisión. El operador de asignación es := y el de igualdad es =. El alcance o visibilidad de las variables sigue estas reglas: 1. Una variable es visible en el bloque en el cual se declara y en todos sus sub-bloques, a menos que se aplique la regla 2. 2. Si se declara una variable en un sub-bloque con el mismo nombre que una variable del bloque contenedor, la variable del sub-bloque es la que tiene prioridad en el sub-bloque.

Ejercicio Crear la siguiente tabla DROP TABLE emp; CREATE TABLE emp( cod NUMBER(8) PRIMARY KEY, nom VARCHAR2(8) NOT NULL, fecha_ing DATE, sueldo NUMBER(8) CHECK(sueldo > 0) );

Procedimientos Todos los bloques que hemos ejecutado hasta ahora son "anónimos" - ellos no tienen nombres. Si el uso de bloques anónimos fuera la única manera con que usted podría organizar sus sentencias, sería muy difícil de utilizar PL/SQL para construir una gran, aplicación compleja. En cambio, PL/SQL admite la definición de bloques de código nombrados, también conocido como subprogramas. Los subprogramas pueden ser procedimientos o funciones. Por lo general, un procedimiento se utiliza para realizar una acción y una función se utiliza para calcular y devolver un valor. Ejemplo CREATE OR REPLACE PROCEDURE hola_mundo IS l_mensaje VARCHAR2 (100) := ' Hola Mundo!'; DBMS_OUTPUT.put_line (l_mensaje); END hola_mundo;

Podemos llamar el procedimiento creado anteriormente con las siguientes sentencias hola_mundo; Procedimientos con parámetros CREATE OR REPLACE PROCEDURE hola_lugar (lugar IN VARCHAR2) IS l_mensaje VARCHAR2 (100); l_mensaje := ' Hola ' lugar; DBMS_OUTPUT.put_line (l_mensaje); END hola_lugar; Llamando el procedimiento hola_lugar ('Mundo!'); hola_lugar ('Universo!'); Declaraciones anclado - %TYPE y %ROWTYPE Cuando se declara una variable, hay que darle un tipo de datos y de un tamaño. Vamos a suponer por un momento que tengo una tabla que se parece a esto: Podría crear un pl/sql- código de la unidad que acceder a algunas de estas columnas. Por ejemplo:

En este fragmento de código, declaró el número 6 dígitos de longitud, una fecha y un varchar2 de 25 caracteres de largo. Aunque estos tamaños coinciden con mi cuadro, hay una forma mejor de hacer esto: Mismos resultados, pero ahora mi software es sólo un poco más fácil de mantener. Si yo uso constantemente %TYPE todo mi código, puede cambiar el tamaño de columna con un poco menos preocupación. Técnicamente, puede ser capaz de cambiar los tipos de datos y estar bien, pero he encontrado que, en la práctica, cuando el usuario cambia los tipos de datos, se necesitará revisar una gran cantidad de su código. %TYPE es usado cuando usted se refiere son las columnas individuales. Hay muchos casos en donde será usado toda una fila. En lugar de crear manualmente un tipo de registro, puede declarar una variable de %ROWTYPE. Por ejemplo, a continuación voy a seleccionar todas las columnas de mi tabla:

Esta recoge la totalidad de las columnas y los ponga a disposición en su programa. Puede detallar cada una de las columnas en su lista de selección como este: %TYPE y %ROWTYPE se llaman anclado declaraciones. Básicamente, usted es el tipo de datos de su anclaje declaraciones a la columna de definiciones en su base de datos. Además de asegurar que sus datos tipos y tamaños siempre coinciden, se hace más fácil ya que el código no tiene que buscar los tamaños, así como cada vez que escribir un pedazo de código. Ejercicio Tomando en cuenta la siguiente tabla create table ARTICULO ( ARTICULO CHAR(255) not null, DESCRIPCION CHAR(255), PESO FLOAT, PRECIO FLOAT constraint PK_ARTICULO primary key (ARTICULO) ); -Crear un procedimiento para insertar datos -Insertar 10 registros a la tabla ARTICULO -Crear un bloque que indique cuantos registros con precios mayores de 100 existen