introducción a pl sql

37
Introducción a PL/SQL PROFESOR: ING. DANILO MONTERO ASTÚA CORREO: [email protected]

Upload: maria-fernanda-sanchez-lobo

Post on 27-Nov-2015

47 views

Category:

Documents


2 download

TRANSCRIPT

Introducción a PL/SQL

PROFESOR: ING. DANILO MONTERO ASTÚACORREO: [email protected]

AGENDA

• LA COMPRENSIÓN DE LOS BENEFICIOS Y LA ESTRUCTURA DE PL / SQL

• EXAMINAR LOS BLOQUES PL / SQL

• GENERACIÓN DE MENSAJES DE SALIDA EN PL / SQL

ACERCA DE PL / SQL

PL / SQL:

ORACLE PL SQL ES UN LENGUAJE DE PROGRAMACIÓN CREADO PORORACLE COMO UNA EXTENSIÓN DE SQL. ESTE LENGUAJE PUEDECOMBINAR LAS CONSULTAS SQL Y LAS INSTRUCCIONES DEPROCEDIMIENTOS (CONDICIONAL Y PROCESAMIENTO ITERATIVO)PARA CREAR UN TRATAMIENTO COMPLEJO Y SER ALMACENADOS ENLA BASE DE DATOS.

SQL ES UN LENGUAJE DE CONSULTA PARA LOS SISTEMAS DE BASES DEDATOS RELACIÓNALES, PERO QUE NO POSEE LA POTENCIA DE LOSLENGUAJES DE PROGRAMACIÓN. SQL ES UN LENGUAJE DECONSULTA, NO UN LENGUAJE DE PROGRAMACIÓN.

ACERCA DE PL / SQL

PL / SQL:

CUANDO SE DESEA REALIZAR UNA APLICACIÓN COMPLETA PARA ELMANEJO DE UNA BASE DE DATOS RELACIONAL, RESULTA NECESARIOUTILIZAR ALGUNA HERRAMIENTA QUE SOPORTE LA CAPACIDAD DECONSULTA DEL SQL Y LA VERSATILIDAD DE LOS LENGUAJES DEPROGRAMACIÓN TRADICIONALES. PL/SQL ES EL LENGUAJE DEPROGRAMACIÓN QUE PROPORCIONA ORACLE PARA EXTENDER ELSQL ESTÁNDAR CON OTRO TIPO DE INSTRUCCIONES.

ACERCA DE PL / SQL

PL / SQL:

SOPORTES PARA LA "EXTENSIÓN DE LENGUAJE DE PROCEDIMIENTOS DE SQL“.

¿ES EL LENGUAJE DE ACCESO DE DATOS ESTÁNDAR DE ORACLE CORPORATION PARA BASES DE DATOS RELACIONALES.

INTEGRA A LA PERFECCIÓN CON LAS CONSTRUCCIONES DE PROCEDIMIENTO SQL.

ACERCA DE PL / SQL

PL / SQL:

PROPORCIONA UNA ESTRUCTURA DE BLOQUES DE LAS UNIDADES DE CÓDIGO EJECUTABLES.EL MANTENIMIENTO DE CÓDIGO ES MÁS FÁCIL CON UNA ESTRUCTURA BIEN DEFINIDA.

PROPORCIONA CONSTRUCCIONES DE PROCEDIMIENTO, TALES COMO:• VARIABLES, CONSTANTES Y TIPOS DE DATOS• LAS ESTRUCTURAS DE CONTROL TALES COMO LAS SENTENCIAS

CONDICIONALES Y BUCLES• UNIDADES DE PROGRAMA REUTILIZABLES QUE SE ESCRIBEN UNA VEZ Y

PUEDEN SER EJECUTADOS MUCHAS VECES

ACERCA DE PL / SQL

CON PL/SQL VAMOS A PODER PROGRAMAR: PROCEDIMIENTOS ALMACENADOS

FUNCIONES

TRIGGERS

SCRIPTS

PERO ADEMÁS PL/SQL NOS PERMITE REALIZAR PROGRAMAS SOBRE LAS

SIGUIENTES HERRAMIENTAS DE ORACLE: ORACLE FORMS

ORACLE REPORTS

ORACLE GRAPHICS

ORACLE APLICATION SERVER

ACERCA DE PL / SQL

• PL/SQL NO ES CASE-SENSITIVE, ES DECIR, NO DIFERENCIA MAYÚSCULAS DE MINÚSCULAS COMO OTROS LENGUAJES DE PROGRAMACIÓN COMO C ó JAVA. SIN EMBARGO DEBEMOS RECORDAR QUE ORACLE ES CASE-SENSITIVE EN LA BÚSQUEDAS DE TEXTO.

• UNA LINEA EN PL/SQL CONTIENE GRUPOS DE CARACTERES CONOCIDOS COMO UNIDADES LEXICAS, QUE PUEDEN SER CLASIFICADAS COMO:

• DELIMITADORES • IDENTIFICADORES • LITERALES • COMENTARIOS • EXPRESIONES

ACERCA DE PL / SQLDELIMITADOR: ES UN SÍMBOLO SIMPLE O COMPUESTO QUE TIENE UNA FUNCIÓN ESPECIAL EN PL/SQL. ESTOS PUEDEN SER:

• OPERADORES ARITMETICOS • OPERADORES LOGICOS

IDENTIFICADOR: SON EMPLEADOS PARA NOMBRAR OBJETOS DE PROGRAMAS EN PL/SQL ASI COMO A UNIDADES DENTRO DEL MISMO, ESTAS UNIDADES Y OBJETOS INCLUYEN:

• CONSTANTES • CURSORES • VARIABLES • SUBPROGRAMAS • EXCEPCIONES • PAQUETES

ACERCA DE PL / SQL

•PAQUETES LITERAL: ES UN VALOR DE TIPO NUMÉRICO, CARACTER, CADENA O LÓGICO NO REPRESENTADO POR UN IDENTIFICADOR (ES UN VALOR EXPLÍCITO).

•COMENTARIO: ES UNA ACLARACIÓN QUE EL PROGRAMADOR INCLUYE EN EL CÓDIGO. SON SOPORTADOS 2 ESTILOS DE COMENTARIOS, EL DE LÍNEA SIMPLE Y DE MULTILÍNEA, PARA LO CUAL SON EMPLEADOS CIERTOS CARACTERS ESPECIALES COMO SON:

VENTAJAS DE PL / SQL

INTEGRACIÓN DE LAS CONSTRUCCIONES DE PROCEDIMIENTO CON SQL

MEJORA DEL RENDIMIENTO (RED y PROCESAMIENTO)

VENTAJAS DE PL / SQL

DESARROLLO DEL PROGRAMA MODULARIZADO. (ANIDADO)

INTEGRACIÓN CON HERRAMIENTAS DE ORACLE.

PORTABILIDAD. (CODIGO REUSABLE)

EL MANEJO DE EXCEPCIONES.

Bloque PL/SQL:

Un bloque en PL SQL es una estructura compuesta por código que debe de cumplir una serie de premisas, a continuación vemos los diferentes elementos que lo componen:

ESTRUCTURA DE UN BLOQUE PL / SQL

Nota: El ‘/ ‘ valida la transacción al ejecutar el código.

ESTRUCTURA DE UN BLOQUE PL / SQL

DECLARE (opcional)- Variables, cursores, excepciones definidas por el usuario

BEGIN (obligatorio)- Sentencias SQL- Declaraciones de PL / SQL

EXCEPTION (opcional)- Acciones a realizar cuando se producen excepciones

END; (obligatorio)

ESTRUCTURA DE UN BLOQUE PL / SQL

ESTRUCTURA DE UN BLOQUE PL / SQL

DONDE:•TIPO_DATO: ES EL TIPO DE DATO QUE VA A PODER ALMACENAR LA VARIABLE, ESTE PUEDE SER CUALQUIERA DE LOS TIPOS SOPORTANDOS POR ORACLE, ES DECIR NUMBER , DATE , CHAR , VARCHAR, VARCHAR2, BOOLEAN ... ADEMÁS PARA ALGUNOS TIPOS DE DATOS (NUMBER Y VARCHAR) PODEMOS ESPECIFICAR LA LONGITUD.•LA CLÁUSULA CONSTANT INDICA LA DEFINICIÓN DE UNA CONSTANTE CUYO VALOR NO PUEDE SER MODIFICADO. SE DEBE INCLUIR LA INICIALIZACIÓN DE LA CONSTANTE EN SU DECLARACIÓN.•LA CLÁUSULA NOT NULL IMPIDE QUE A UNA VARIABLE SE LE ASIGNE EL VALOR NULO, Y POR TANTO DEBE INICIALIZARSE A UN VALOR DIFERENTE DE NULL.

ESTRUCTURA DE UN BLOQUE PL / SQL

donde: LAS VARIABLES QUE NO SON INICIALIZADAS TOMAN EL VALOR INICIAL NULL. LOS TIPOS ESCALARES INCLUYEN LOS DEFINIDOS EN SQL MÁS LOS TIPOS VARCHAR Y BOOLEAN. ESTE

ÚLTIMO PUEDE TOMAR LOS VALORES TRUE, FALSE Y NULL, Y SE SUELE UTILIZAR PARA ALMACENAR ELRESULTADO DE ALGUNA OPERACIÓN LÓGICA. VARCHAR ES UN SINÓNIMO DE CHAR.

TAMBIÉN ES POSIBLE DEFINIR EL TIPO DE UNA VARIABLE O CONSTANTE, DEPENDIENDO DEL TIPO DE OTROIDENTIFICADOR, MEDIANTE LA UTILIZACIÓN DE LAS CLÁUSULAS %TYPE Y %ROWTYPE. MEDIANTE LAPRIMERA OPCIÓN SE DEFINE UNA VARIABLE O CONSTANTE ESCALAR, Y CON LA SEGUNDA SE DEFINE UNAVARIABLE FILA, DONDE IDENTIFICADOR PUEDE SER OTRA VARIABLE FILA O UNA TABLA. HABITUALMENTESE UTILIZA %TYPE PARA DEFINIR LA VARIABLE DEL MISMO TIPO QUE TENGA DEFINIDO UN CAMPO EN UNATABLA DE LA BASE DE DATOS, MIENTRAS QUE %ROWTYPE SE UTILIZA PARA DECLARAR VARIBALESUTILIZANDO CURSORES.

ESTRUCTURA DE UN BLOQUE PL / SQL

TIPOS DE DATOS EN PL/SQL

CADA CONSTANTE Y VARIABLE TIENE UN TIPO DE DATO EN EL CUAL SE ESPECIFICA EL FORMATO DE ALMACENAMIENTO, RESTRICCIONES Y RANGO DE VALORES VALIDOS.

PL/SQL PROPORCIONA UNA VARIEDAD PREDEFINIDA DE TIPOS DE DATOS . CASI TODOS LOS TIPOS DE DATOS MANEJADOS POR PL/SQL SON SIMILARES A LOS SOPORTADOS POR SQL. A CONTINUACIÓN SE MUESTRAN LOS TIPOS DE DATOS MÁS COMUNES:

TIPOS DE DATOS EN PL/SQL

NUMBER (NUMÉRICO): ALMACENA NÚMEROS ENTEROS O DEPUNTO FLOTANTE, VIRTUALMENTE DE CUALQUIER LONGITUD,AUNQUE PUEDE SER ESPECIFICADA LA PRECISIÓN (NÚMERO DEDIGITOS) Y LA ESCALA QUE ES LA QUE DETERMINA EL NÚMERO DEDECIMALES.

TIPOS DE DATOS EN PL/SQL

CHAR (CARACTER): ALMACENA DATOS DE TIPO CARACTER CON UNALONGITUD MAXIMA DE 32767 Y CUYO VALOR DE LONGITUD PORDEFAULT ES 1

TIPOS DE DATOS EN PL/SQL

VARCHAR2 (CARACTER DE LONGITUD VARIABLE): ALMACENA DATOSDE TIPO CARACTER EMPLEANDO SÓLO LA CANTIDAD NECESARIA AÚNCUANDO LA LONGITUD MÁXIMA SEA MAYOR.

TIPOS DE DATOS EN PL/SQL

BOOLEAN (LÓGICO): SE EMPLEA PARA ALMACENAR VALORES TRUE OFALSE.

TIPOS DE DATOS EN PL/SQL

DATE (FECHA): ALMACENA DATOS DE TIPO FECHA. LAS FECHAS SE

ALMACENAN INTERNAMENTE COMO DATOS NUMÉRICOS, POR LO QUE

ES POSIBLE REALIZAR OPERACIONES ARITMETICAS CON ELLAS.

ATRIBUTOS DE TIPO. UN ATRIBUTO DE TIPO PL/SQL ES UN

MODIFICADOR QUE PUEDE SER USADO PARA OBTENER

INFORMACIÓN DE UN OBJETO DE LA BASE DE DATOS. EL ATRIBUTO

%TYPE PERMITE CONOCER EL TIPO DE UNA VARIABLE, CONSTANTE O

CAMPO DE LA BASE DE DATOS. EL ATRIBUTO %ROWTYPE PERMITE

OBTENER LOS TIPOS DE TODOS LOS CAMPOS DE UNA TABLA DE LA

BASE DE DATOS, DE UNA VISTA O DE UN CURSOR.

OPERADORES EN PL/SQL

AGENDA

• LA COMPRENSIÓN DE LOS BENEFICIOS Y LA ESTRUCTURA DE PL / SQL

• EXAMINAR LOS BLOQUES PL / SQL

• GENERACIÓN DE MENSAJES DE SALIDA EN PL / SQL

TIPOS DE BLOQUES

EXAMINANDO UN BLOQUE ANÓNIMO

UN BLOQUE ANÓNIMO EN EL ESPACIO DE TRABAJO DE SQL DEVELOPER:

EJECUTANDO UN BLOQUE ANONIMO

EJECUTANDO UN BLOQUE ANONIMO

SELECT

SINTAXIS: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.

EJECUTANDO UN BLOQUE ANONIMO

Ejemplo:

DECLARE

v_apellidos VARCHAR2(50);

v_nombre VARCHAR2(30);

BEGIN

SELECT apellidos, nombre

INTO v_apellidos, v_nombre

FROM Empleados

WHERE id=’5’;

END;

AGENDA

• LA COMPRENSIÓN DE LOS BENEFICIOS Y LA ESTRUCTURA DE PL / SQL

• EXAMINAR LOS BLOQUES PL / SQL

• GENERACIÓN DE MENSAJES DE SALIDA EN PL / SQL

HABILITACIÓN DE SALIDA DE UN BLOQUE PL / SQL

1. Para habilitar la salida en SQL Developer, ejecute el comando siguiente antes de ejecutar el bloque PL / SQL:

2. Use un paquete predefinido de Oracle y su procedimiento en el bloque anónimo: DBMS_OUTPUT.PUT_LINE

VISUALIZACIÓN DE LA SALIDA DE UN BLOQUE PL / SQL

QUIZ

UN BLOQUE PL / SQL DEBE ESTAR FORMADO POR LAS TRES SECCIONES SIGUIENTES:

UNA SECCIÓN DECLARATIVA, QUE COMIENZA CON LA PALABRA CLAVEDECLARE Y TERMINA CUANDO LA SECCIÓN EJECUTABLE COMIENZA.

UNA SECCIÓN EJECUTABLE, QUE COMIENZA CON LA PALABRA CLAVEBEGIN Y TERMINA CON END.

UNA SECCIÓN DE MANEJO DE EXCEPCIONES, QUE SE INICIA CON LAEXCEPTION PALABRA CLAVE Y ESTÁ ANIDADO DENTRO DEL EJECUTABLESECCIÓN.

1. VERDADERO 2. FALSO

RESPUESTA: 2

UN BLOQUE PL / SQL CONSTA DE TRES SECCIONES: DECLARATIVA (OPCIONAL): LA SECCIÓN DECLARATIVA OPCIONAL

COMIENZA CON LA PALABRA CLAVE DECLARE Y TERMINA CUANDO LA SECCIÓN EJECUTABLE COMIENZA.

EJECUTABLE (REQUERIDO): LA SECCIÓN EJECUTABLE REQUERIDO COMIENZA CON LA PALABRA CLAVE BEGIN Y TERMINA CON END. ESTA SECCIÓN ESENCIALMENTE TIENE QUE TENER POR LO MENOS UN COMUNICADO. OBSERVE QUE END SE TERMINA CON UN PUNTO Y COMA. LA SECCIÓN EJECUTABLE DE UN BLOQUE PL / SQL PUEDE, A SU VEZ, INCLUIR CUALQUIER NÚMERO DE BLOQUES DE PL / SQL.

EL MANEJO DE EXCEPCIONES (OPCIONAL): LA SECCIÓN EXCEPCIÓN FACULTATIVA SE ANIDA DENTRO DE LA SECCIÓN EJECUTABLE. ESTA SECCIÓN COMIENZA CON LA PALABRA CLAVE EXCEPTION.