Download - Taller de Plsql 1
![Page 1: Taller de Plsql 1](https://reader031.vdocument.in/reader031/viewer/2022020808/5571fc41497959916996d8e9/html5/thumbnails/1.jpg)
5/9/2018 Taller de Plsql 1 - slidepdf.com
http://slidepdf.com/reader/full/taller-de-plsql-1 1/58
Taller de Oracle.
� Base de Datos Oracle.� SQL� PL/SQL
� Developer Forms.� Developer Report.
![Page 2: Taller de Plsql 1](https://reader031.vdocument.in/reader031/viewer/2022020808/5571fc41497959916996d8e9/html5/thumbnails/2.jpg)
5/9/2018 Taller de Plsql 1 - slidepdf.com
http://slidepdf.com/reader/full/taller-de-plsql-1 2/58
PL/SQL.
� Revisión del día anterior.� Introducción.� Terminología.
� Conceptos Básicos de PL/SQL.� Tipos comunes de datos.� Componentes de PL/SQL.� Estructuras de Control.
� Bucles.� Excepciones.� Cursores.
![Page 3: Taller de Plsql 1](https://reader031.vdocument.in/reader031/viewer/2022020808/5571fc41497959916996d8e9/html5/thumbnails/3.jpg)
5/9/2018 Taller de Plsql 1 - slidepdf.com
http://slidepdf.com/reader/full/taller-de-plsql-1 3/58
PL/SQL.
� Introducción.� Existen dos versiones de PL/SQL,� como parte del motor de base de datos, y
� otro motor separado incluido en lasherramientas de oracle (developer, procedurebuilder).
� El PL/SQL de herramienta tiene una sintaxisadicional, diseñada para satisfacer losrequisitos de las herramientas.
![Page 4: Taller de Plsql 1](https://reader031.vdocument.in/reader031/viewer/2022020808/5571fc41497959916996d8e9/html5/thumbnails/4.jpg)
5/9/2018 Taller de Plsql 1 - slidepdf.com
http://slidepdf.com/reader/full/taller-de-plsql-1 4/58
PL/SQL.
� Terminología.� Las palabras reservadas tienen un significado
especial en PL/SQL, no se las puede utilizarcomo nombres de variables. Ejem. Declare,begin, end, number, loop, etc.
� Los tipos de datos define la clase de unelemento de información.
� Un bucle es una estructura de un programa
informático en la que un segmento de códigose ejecuta de forma repetitiva.
![Page 5: Taller de Plsql 1](https://reader031.vdocument.in/reader031/viewer/2022020808/5571fc41497959916996d8e9/html5/thumbnails/5.jpg)
5/9/2018 Taller de Plsql 1 - slidepdf.com
http://slidepdf.com/reader/full/taller-de-plsql-1 5/58
PL/SQL.
� Terminología.� Una condición de salida es la parte del bucle
donde se realiza una prueba con los datos y, sila prueba resulta exitosa, concluye el bucle.
� La estructura de control influye en el flujo deprocesamiento de un programa. Si existen dosformas distintas de procesar los datos, elmecanismo utilizado para decidir que
procesamiento se lleva a cabo.
![Page 6: Taller de Plsql 1](https://reader031.vdocument.in/reader031/viewer/2022020808/5571fc41497959916996d8e9/html5/thumbnails/6.jpg)
5/9/2018 Taller de Plsql 1 - slidepdf.com
http://slidepdf.com/reader/full/taller-de-plsql-1 6/58
PL/SQL.
� Terminología.� Un objeto almacenado es un segmento de
código PL/SQL almacenado en la base dedatos.
� Un procedimiento es un fragmento nominadode código PL/SQL que se almacena en la basede datos.
� Una función es, también, un fragmento de
código PL/SQL que se almacena en la base dedatos.
![Page 7: Taller de Plsql 1](https://reader031.vdocument.in/reader031/viewer/2022020808/5571fc41497959916996d8e9/html5/thumbnails/7.jpg)
5/9/2018 Taller de Plsql 1 - slidepdf.com
http://slidepdf.com/reader/full/taller-de-plsql-1 7/58
PL/SQL.
� Terminología.� Un paquete es una colección de procedimientos
y funciones que se han empaquetado juntos.
� Un procedimiento es un fragmento nominado decódigo PL/SQL que se almacena en la base dedatos.
� Un disparador de base de datos también escódigo PL/SQL ejecutable. Los disparadores de
base de datos se ejecutan antes o después deuna instrucción de inserción, actualización oeliminación.
![Page 8: Taller de Plsql 1](https://reader031.vdocument.in/reader031/viewer/2022020808/5571fc41497959916996d8e9/html5/thumbnails/8.jpg)
5/9/2018 Taller de Plsql 1 - slidepdf.com
http://slidepdf.com/reader/full/taller-de-plsql-1 8/58
PL/SQL.
� Conceptos básicos de PL/SQL.� Caracteres permitidos de PL/SQL.� Los operadores aritméticos.
� Los operadores relacionales.� Símbolos especiales.
![Page 9: Taller de Plsql 1](https://reader031.vdocument.in/reader031/viewer/2022020808/5571fc41497959916996d8e9/html5/thumbnails/9.jpg)
5/9/2018 Taller de Plsql 1 - slidepdf.com
http://slidepdf.com/reader/full/taller-de-plsql-1 9/58
PL/SQL.
� Caracteres permitidos de PL/SQL.� Cuando de programa en PL/SQL, se está
limitado a los siguientes caracteres:± Todas las letras mayúsculas.± Los dígitos 0 a 9.± Los símbolos ()+-*/<>!;:.¶@%,´#$&_|{}?[
� Algunos de estos caracteres se utilizan para elcódigo, otros como operadores y operaciones
relacionales.
![Page 10: Taller de Plsql 1](https://reader031.vdocument.in/reader031/viewer/2022020808/5571fc41497959916996d8e9/html5/thumbnails/10.jpg)
5/9/2018 Taller de Plsql 1 - slidepdf.com
http://slidepdf.com/reader/full/taller-de-plsql-1 10/58
PL/SQL.
� Los operadores aritméticos.� Los siguientes son los operadores aritméticos
más comunes utilizados en PL/SQL.operador significado
+ suma* multiplicación** exponenciación / división
- sustracción
![Page 11: Taller de Plsql 1](https://reader031.vdocument.in/reader031/viewer/2022020808/5571fc41497959916996d8e9/html5/thumbnails/11.jpg)
5/9/2018 Taller de Plsql 1 - slidepdf.com
http://slidepdf.com/reader/full/taller-de-plsql-1 11/58
PL/SQL.
� Los operadores relacionales.� operador significado� <> distinto de� != distinto de� > mayor que� < menor que� = igual
![Page 12: Taller de Plsql 1](https://reader031.vdocument.in/reader031/viewer/2022020808/5571fc41497959916996d8e9/html5/thumbnails/12.jpg)
5/9/2018 Taller de Plsql 1 - slidepdf.com
http://slidepdf.com/reader/full/taller-de-plsql-1 12/58
PL/SQL.
� Símbolos especiales.� Los siguientes son los símbolos más comunes
que se emplean para la programación conPL/SQL.
� símbolo significado� () separador de lista� ; fin de orden� . elemento separador� := asignación
� || concatenación� -- delimitador de comentario� /* y */ delimitador de comentario
![Page 13: Taller de Plsql 1](https://reader031.vdocument.in/reader031/viewer/2022020808/5571fc41497959916996d8e9/html5/thumbnails/13.jpg)
5/9/2018 Taller de Plsql 1 - slidepdf.com
http://slidepdf.com/reader/full/taller-de-plsql-1 13/58
PL/SQL.
� Variables.� Las variables deben comenzar por una letra (A-
Z)� Opcionalmente, las variables pueden ir seguidas
de una o más letras, de números (0-9), de loscaracteres especiales $,#_
� Las variables no deben ser más largas de treintacaracteres.
� En los nombres de variables no se pueden
incluir espacios.
![Page 14: Taller de Plsql 1](https://reader031.vdocument.in/reader031/viewer/2022020808/5571fc41497959916996d8e9/html5/thumbnails/14.jpg)
5/9/2018 Taller de Plsql 1 - slidepdf.com
http://slidepdf.com/reader/full/taller-de-plsql-1 14/58
PL/SQL.
� Variables.� variable válido razón� 23_letras� prueba_nombre
� prueba-nombre� mas nombre� nombre_de_variable_es_demasiado_largo� num________son$$$$$
� mas_$$$$$$� 31
![Page 15: Taller de Plsql 1](https://reader031.vdocument.in/reader031/viewer/2022020808/5571fc41497959916996d8e9/html5/thumbnails/15.jpg)
5/9/2018 Taller de Plsql 1 - slidepdf.com
http://slidepdf.com/reader/full/taller-de-plsql-1 15/58
PL/SQL.
� Variables.� variable válido razón� 23_letras NO Debe comenzar por una letra
� prueba_nombre SÍ
� prueba-nombre NO Sólo se permiten ($,#,_)� mas nombre NO No puede haber espacios blanco
� nombre_de_variable_es_demasiado_largo� NO más de 30 caracteres
� num___son$$$$$ SI� mas_$$$$$$ SI� 31 NO debe comenzar por una letra
Mayo - 2002
![Page 16: Taller de Plsql 1](https://reader031.vdocument.in/reader031/viewer/2022020808/5571fc41497959916996d8e9/html5/thumbnails/16.jpg)
5/9/2018 Taller de Plsql 1 - slidepdf.com
http://slidepdf.com/reader/full/taller-de-plsql-1 16/58
PL/SQL.
� Tipo comunes de datos.� Un programa PL/SQL se escribe para manipular
y visualizar muchos tipos diferente de datos.� Los principales son:
± VARCHAR2± NUMBER± DATE± BOOLEAN
Mayo - 2002
![Page 17: Taller de Plsql 1](https://reader031.vdocument.in/reader031/viewer/2022020808/5571fc41497959916996d8e9/html5/thumbnails/17.jpg)
5/9/2018 Taller de Plsql 1 - slidepdf.com
http://slidepdf.com/reader/full/taller-de-plsql-1 17/58
PL/SQL.
� Tipo comunes de datos.� VARCHAR2� Es un tipo de dato alfanumérico de longitud
variable.
� Puede tener hasta 32.767 bytes de longitud.� Se declaran en la sección declare y terminan en;
nombre_variablevarchar2(longitud);
nombre_variablevarchar2(10);nombre_variablevarchar2(10):= µESPOL¶;
Mayo - 2002
![Page 18: Taller de Plsql 1](https://reader031.vdocument.in/reader031/viewer/2022020808/5571fc41497959916996d8e9/html5/thumbnails/18.jpg)
5/9/2018 Taller de Plsql 1 - slidepdf.com
http://slidepdf.com/reader/full/taller-de-plsql-1 18/58
PL/SQL.
� Tipo comunes de datos.� NUMBER� Es un tipo de dato que se puede usar para
representar todos los datos numéricos.
campo_numero number(entero,decimal);campo_numero number;campo_numero number(4):=100;
Mayo - 2002
![Page 19: Taller de Plsql 1](https://reader031.vdocument.in/reader031/viewer/2022020808/5571fc41497959916996d8e9/html5/thumbnails/19.jpg)
5/9/2018 Taller de Plsql 1 - slidepdf.com
http://slidepdf.com/reader/full/taller-de-plsql-1 19/58
PL/SQL.
� Tipo comunes de datos.� DATE� Este tipo de dato se usa para almacenar fechas
de longitud fija. La declaración no contienecalificadores.
campo_fecha date;campo_fecha date:=sysdate;
Mayo - 2002
![Page 20: Taller de Plsql 1](https://reader031.vdocument.in/reader031/viewer/2022020808/5571fc41497959916996d8e9/html5/thumbnails/20.jpg)
5/9/2018 Taller de Plsql 1 - slidepdf.com
http://slidepdf.com/reader/full/taller-de-plsql-1 20/58
PL/SQL.
� Tipo comunes de datos.� BOOLEAN� Este tipo de dato es un conmutador que puede
almacenar los estado true y false.
� Se puede comprobar y se escoge si esverdadero o falso.
valida boolean;valida boolean:= true;
Mayo - 2002
![Page 21: Taller de Plsql 1](https://reader031.vdocument.in/reader031/viewer/2022020808/5571fc41497959916996d8e9/html5/thumbnails/21.jpg)
5/9/2018 Taller de Plsql 1 - slidepdf.com
http://slidepdf.com/reader/full/taller-de-plsql-1 21/58
PL/SQL.
� Componentes de PL/SQL.� Codificación mediante estructuras de bloque.� Declaración de variables.� Estructuras de control, incluyendo el control de
programa, estructuras lógicas condicionales yestructuras de bloque.� Tratamiento de excepciones.� La estructura de <<no hacer nada>>
Mayo - 2002
![Page 22: Taller de Plsql 1](https://reader031.vdocument.in/reader031/viewer/2022020808/5571fc41497959916996d8e9/html5/thumbnails/22.jpg)
5/9/2018 Taller de Plsql 1 - slidepdf.com
http://slidepdf.com/reader/full/taller-de-plsql-1 22/58
PL/SQL.
� Estructura de Bloque.� Los programas PL/SQL se escriben en bloquesde código que disponen de seccionesindependientes para las declaraciones devariables, el código ejecutable y el tratamiento
de excepciones (errores).� Cuando se almacena el código PL/SQL en la
base de datos, el subprograma incluye unasección de cabecera en la que se nombra a launidad almacenada, se declara el tipo de
programa y, luego, opcionalmente, se definenargumentos in, out e in out.
Mayo - 2002
![Page 23: Taller de Plsql 1](https://reader031.vdocument.in/reader031/viewer/2022020808/5571fc41497959916996d8e9/html5/thumbnails/23.jpg)
5/9/2018 Taller de Plsql 1 - slidepdf.com
http://slidepdf.com/reader/full/taller-de-plsql-1 23/58
PL/SQL.
� Estructura de Bloque.� IN.- Read-only Cuando se especifica IN, el valordel parámetro es solo de ingreso
� OUT.-Write-only El valor del parámetro es solode salida
� IN OUT.- El valor del parámetro es entrada ysalida.
Mayo - 2002
![Page 24: Taller de Plsql 1](https://reader031.vdocument.in/reader031/viewer/2022020808/5571fc41497959916996d8e9/html5/thumbnails/24.jpg)
5/9/2018 Taller de Plsql 1 - slidepdf.com
http://slidepdf.com/reader/full/taller-de-plsql-1 24/58
PL/SQL.
� Estructura de Bloque PL/SQL de base de datos.create procedure proc ( codigo number,
nombre in varchar2,
telefono number,
error in out varchar2) isvl_error varchar2(100);
begin
null;
end;
Mayo - 2002
![Page 25: Taller de Plsql 1](https://reader031.vdocument.in/reader031/viewer/2022020808/5571fc41497959916996d8e9/html5/thumbnails/25.jpg)
5/9/2018 Taller de Plsql 1 - slidepdf.com
http://slidepdf.com/reader/full/taller-de-plsql-1 25/58
PL/SQL.
� Estructura de Bloque PL/SQL de base de datos.create function proc1 ( codigo number,
nombre in varchar2,
telefono number,
error in out varchar2)return boolean is
vl_error varchar2(100);
begin
null;
end;
Mayo - 2002
![Page 26: Taller de Plsql 1](https://reader031.vdocument.in/reader031/viewer/2022020808/5571fc41497959916996d8e9/html5/thumbnails/26.jpg)
5/9/2018 Taller de Plsql 1 - slidepdf.com
http://slidepdf.com/reader/full/taller-de-plsql-1 26/58
PL/SQL.
� Estructura de Bloque PL/SQL.Declare
......
Begin
....End;
Mayo - 2002
![Page 27: Taller de Plsql 1](https://reader031.vdocument.in/reader031/viewer/2022020808/5571fc41497959916996d8e9/html5/thumbnails/27.jpg)
5/9/2018 Taller de Plsql 1 - slidepdf.com
http://slidepdf.com/reader/full/taller-de-plsql-1 27/58
PL/SQL.
� Estructura de Bloque PL/SQL.Declare
......
Begin
....Exception
.......
End;
Mayo - 2002
![Page 28: Taller de Plsql 1](https://reader031.vdocument.in/reader031/viewer/2022020808/5571fc41497959916996d8e9/html5/thumbnails/28.jpg)
5/9/2018 Taller de Plsql 1 - slidepdf.com
http://slidepdf.com/reader/full/taller-de-plsql-1 28/58
PL/SQL.
� Estructura de Bloque PL/SQL.� Los bloques PL/SQL pueden anidarse creandonumerosos bloques de código BEGIN/END en elinterior de otro bloque.
Declare......
Begin
....
Begin
.....
End;
..............................
Exception
.......
End; Mayo - 2002
![Page 29: Taller de Plsql 1](https://reader031.vdocument.in/reader031/viewer/2022020808/5571fc41497959916996d8e9/html5/thumbnails/29.jpg)
5/9/2018 Taller de Plsql 1 - slidepdf.com
http://slidepdf.com/reader/full/taller-de-plsql-1 29/58
PL/SQL.
� La sección declare.� En esta parte de los bloques PL/SQL es donde sedefinen las variables.
Create procedure...... ()as
nombre varchar2(200);codigo number;begin-----------------------------------------declare
nombre varchar2(200);codigo number;begin
Mayo - 2002
![Page 30: Taller de Plsql 1](https://reader031.vdocument.in/reader031/viewer/2022020808/5571fc41497959916996d8e9/html5/thumbnails/30.jpg)
5/9/2018 Taller de Plsql 1 - slidepdf.com
http://slidepdf.com/reader/full/taller-de-plsql-1 30/58
PL/SQL.
� Estructura de control.� Es la parte más importante en cualquierlenguaje de programación.
� Veremos los siguientes temas:� Control de programa.� Tres tipos de estructura lógica if � Cuatro tipos de estructura de bucle.
Mayo - 2002
![Page 31: Taller de Plsql 1](https://reader031.vdocument.in/reader031/viewer/2022020808/5571fc41497959916996d8e9/html5/thumbnails/31.jpg)
5/9/2018 Taller de Plsql 1 - slidepdf.com
http://slidepdf.com/reader/full/taller-de-plsql-1 31/58
PL/SQL.
� Control de programa.� El control del programa está gobernado por elestado de las variables que usa y los datos quelee y escribe en la base de datos.
� Si deseamos visualizar las variables que seejecutan en un bloque PL/SQL, debemosejecutar las siguientes sentencias:
SQL> SET SERVEROUTPUT ONdeclare...
Begin....DBMS_OUTPUT.PUT_LINE(µ...¶);
Mayo - 2002
![Page 32: Taller de Plsql 1](https://reader031.vdocument.in/reader031/viewer/2022020808/5571fc41497959916996d8e9/html5/thumbnails/32.jpg)
5/9/2018 Taller de Plsql 1 - slidepdf.com
http://slidepdf.com/reader/full/taller-de-plsql-1 32/58
PL/SQL.
� Tres tipos de estructura lógica if � Cuando se escriben programas de computación,se presentan situaciones en las que se debecomprobar una condición; cuando se envía yresulta ser verdadera se hace algo, cuando es
falso se hace otra cosa diferente.� R1.- Cada orden if va seguida de su
correspondiente then. La línea que empieza conif no debe terminarse con punto y coma (;).
� R2.- Cada bloque de la instrucción if se terminacon su correspondiente end if.
Mayo - 2002
![Page 33: Taller de Plsql 1](https://reader031.vdocument.in/reader031/viewer/2022020808/5571fc41497959916996d8e9/html5/thumbnails/33.jpg)
5/9/2018 Taller de Plsql 1 - slidepdf.com
http://slidepdf.com/reader/full/taller-de-plsql-1 33/58
PL/SQL.
� Tres tipos de estructura lógica if � R3.- Solo puede haber un else con cadainstrucción if.
� R4.- La línea que comienza por else no setermina con punto y coma (;).
� R5.- No existe el correspondiente end if porcada elsif
Mayo - 2002
![Page 34: Taller de Plsql 1](https://reader031.vdocument.in/reader031/viewer/2022020808/5571fc41497959916996d8e9/html5/thumbnails/34.jpg)
5/9/2018 Taller de Plsql 1 - slidepdf.com
http://slidepdf.com/reader/full/taller-de-plsql-1 34/58
PL/SQL.
� IF THEN� Esta estructura prueba una única condición.� Si la condición es verdadera, se ejecutan una o
más líneas de código.� Si la condición es falsa, el control de programa
para a la instrucción siguiente.
If var > 10 thenvar2 := var1 + 10;
end if;
Mayo - 2002
![Page 35: Taller de Plsql 1](https://reader031.vdocument.in/reader031/viewer/2022020808/5571fc41497959916996d8e9/html5/thumbnails/35.jpg)
5/9/2018 Taller de Plsql 1 - slidepdf.com
http://slidepdf.com/reader/full/taller-de-plsql-1 35/58
PL/SQL.
� IF THEN� Se pueden escribir instrucciones if-thenanidadas.
if provincia = µGUAYAS¶ then
if ciudad = µGUAYAQUIL¶ then......end if;
end if;
Mayo - 2002
![Page 36: Taller de Plsql 1](https://reader031.vdocument.in/reader031/viewer/2022020808/5571fc41497959916996d8e9/html5/thumbnails/36.jpg)
5/9/2018 Taller de Plsql 1 - slidepdf.com
http://slidepdf.com/reader/full/taller-de-plsql-1 36/58
PL/SQL.
� IF THEN� Se pueden escribir instrucciones if-thenanidadas.
if provincia = µGUAYAS¶ then
if ciudad = µGUAYAQUIL¶ then......end if;
elsif provincia = µPICHINCHA¶ then............
end if;
Mayo - 2002
![Page 37: Taller de Plsql 1](https://reader031.vdocument.in/reader031/viewer/2022020808/5571fc41497959916996d8e9/html5/thumbnails/37.jpg)
5/9/2018 Taller de Plsql 1 - slidepdf.com
http://slidepdf.com/reader/full/taller-de-plsql-1 37/58
PL/SQL.
� IF THEN� Se pueden escribir instrucciones if-thenanidadas.
if provincia = µGUAYAS¶ then
if ciudad = µGUAYAQUIL¶ then......end if;
elsif provincia = µPICHINCHA¶ then............
else ....end if;
Mayo - 2002
![Page 38: Taller de Plsql 1](https://reader031.vdocument.in/reader031/viewer/2022020808/5571fc41497959916996d8e9/html5/thumbnails/38.jpg)
5/9/2018 Taller de Plsql 1 - slidepdf.com
http://slidepdf.com/reader/full/taller-de-plsql-1 38/58
PL/SQL.
� Cuatro tipos de estructura de bucle.� Los bucles proporcionan la capacidad deejecutar un proceso repetidas veces hasta suterminación.
� Uno de los problemas de la codificación de
bucles es estar seguro de que el código permiteterminar cuando se ha satisfecho una condiciónde salida.
Mayo - 2002
![Page 39: Taller de Plsql 1](https://reader031.vdocument.in/reader031/viewer/2022020808/5571fc41497959916996d8e9/html5/thumbnails/39.jpg)
5/9/2018 Taller de Plsql 1 - slidepdf.com
http://slidepdf.com/reader/full/taller-de-plsql-1 39/58
PL/SQL.
� LOOP-EXIT- END LOOPcont := 1;loop
cont := cont + 1;
if cont >= 100 thenexit;end if;.....
end loop;
Mayo - 2002
![Page 40: Taller de Plsql 1](https://reader031.vdocument.in/reader031/viewer/2022020808/5571fc41497959916996d8e9/html5/thumbnails/40.jpg)
5/9/2018 Taller de Plsql 1 - slidepdf.com
http://slidepdf.com/reader/full/taller-de-plsql-1 40/58
PL/SQL.
� LOOP-EXIT WHEN- END LOOPcont := 1;loop
cont := cont + 1;
exit when cont >= 100.....end loop;
Mayo - 2002
![Page 41: Taller de Plsql 1](https://reader031.vdocument.in/reader031/viewer/2022020808/5571fc41497959916996d8e9/html5/thumbnails/41.jpg)
5/9/2018 Taller de Plsql 1 - slidepdf.com
http://slidepdf.com/reader/full/taller-de-plsql-1 41/58
PL/SQL.
� WHILE-LOOP-END LOOPcont := 1;while cont <= 100 loop
cont := cont +1;
.....end loop;
Mayo - 2002
![Page 42: Taller de Plsql 1](https://reader031.vdocument.in/reader031/viewer/2022020808/5571fc41497959916996d8e9/html5/thumbnails/42.jpg)
5/9/2018 Taller de Plsql 1 - slidepdf.com
http://slidepdf.com/reader/full/taller-de-plsql-1 42/58
PL/SQL.
� FOR-IN-LOOP-END LOOP� La parte for in, se define la variable para elcontrol del bucle.
� Una o más instrucciones dentro del bucle,indican que se ejecuta hasta que la variable que
controla el bucle alcanza el valor de la condiciónde salida.� La parte end loop, indica que termina el bucle
for cnt in 1..3 loopinsert into.... Values (cnt...);
end loop;
Mayo - 2002
![Page 43: Taller de Plsql 1](https://reader031.vdocument.in/reader031/viewer/2022020808/5571fc41497959916996d8e9/html5/thumbnails/43.jpg)
5/9/2018 Taller de Plsql 1 - slidepdf.com
http://slidepdf.com/reader/full/taller-de-plsql-1 43/58
PL/SQL.
� EXCEPCIONES� Esta sección es opcional en cada bloque.� La sección de excepciones es el mecanismo que
se utiliza en PL/SQL para manejar lascondiciones de error.
� Siempre que se produce un error durante laejecución de una sección de código PL/SQL, elcontrol pasa inmediatamente a la sección deexcepciones de los bloques en ejecución.
Mayo - 2002
![Page 44: Taller de Plsql 1](https://reader031.vdocument.in/reader031/viewer/2022020808/5571fc41497959916996d8e9/html5/thumbnails/44.jpg)
5/9/2018 Taller de Plsql 1 - slidepdf.com
http://slidepdf.com/reader/full/taller-de-plsql-1 44/58
PL/SQL.
� EXCEPCIONES� no_data_found� Si una orden select intenta recuperar datos de
acuerdo con sus condiciones, se produce estaexcepción cuando ninguna fila satisface los
criterios de selección.
Mayo - 2002
set serveroutput ondeclarenombre varchar2(60);error varchar2(2000); begin
select descripcion into nombrefrom qa_proyectoswhere id_proyecto = 'ESPOL';exceptionwhen no_data_found thenerror := sqlerrm;dbms_output.put_line('error: '||error);
end;
![Page 45: Taller de Plsql 1](https://reader031.vdocument.in/reader031/viewer/2022020808/5571fc41497959916996d8e9/html5/thumbnails/45.jpg)
5/9/2018 Taller de Plsql 1 - slidepdf.com
http://slidepdf.com/reader/full/taller-de-plsql-1 45/58
PL/SQL.
� EXCEPCIONES� too_many_rows� Dado que cada cursor implícito sólo es capaz de
recuperar una fila, esta excepción detecta laexistencia de más de una fila.
Mayo - 2002
declarenombre varchar2(60);error varchar2(2000); beginselect descripcion into nombre
from qa_proyectoswhere id_proyecto like '%A%';exceptionwhen too_many_rows thenerror := sqlerrm;dbms_output.put_line('error: '||error);
end;
![Page 46: Taller de Plsql 1](https://reader031.vdocument.in/reader031/viewer/2022020808/5571fc41497959916996d8e9/html5/thumbnails/46.jpg)
5/9/2018 Taller de Plsql 1 - slidepdf.com
http://slidepdf.com/reader/full/taller-de-plsql-1 46/58
PL/SQL.
� EXCEPCIONES� dup_val_on_index� Esta excepción detecta un intento de crear una
entrada en un índice cuyo valor ya existe enla(s) columna(s) clave(s).
Mayo - 2002
declare
nombre varchar2(60);
error varchar2(2000);
begin
insert into a values (1);
exceptionwhen dup_val_on_index then
error := sqlerrm;
dbms_output.put_line('error: '||error);
end;
![Page 47: Taller de Plsql 1](https://reader031.vdocument.in/reader031/viewer/2022020808/5571fc41497959916996d8e9/html5/thumbnails/47.jpg)
5/9/2018 Taller de Plsql 1 - slidepdf.com
http://slidepdf.com/reader/full/taller-de-plsql-1 47/58
PL/SQL.
� EXCEPCIONES� others� Esta excepción indica que se ha producido un
error no manejado por oracle y se debe tomarlas medidas necesarias para la ejecución.
� Use siempre una rutina de tratamiento deerrores when others. Si dispone de otras rutinasde tratamiento de errores en la sección deexcepciones, asegúrese de que la cláusula whenothers esté en último lugar.
Mayo - 2002
![Page 48: Taller de Plsql 1](https://reader031.vdocument.in/reader031/viewer/2022020808/5571fc41497959916996d8e9/html5/thumbnails/48.jpg)
5/9/2018 Taller de Plsql 1 - slidepdf.com
http://slidepdf.com/reader/full/taller-de-plsql-1 48/58
PL/SQL.
� EXCEPCIONES
Mayo - 2002
declare
nombre varchar2(60);error varchar2(4000);
begin
insert into b values ('hola');
exception
when no_data_found then
error := sqlerrm;dbms_output.put_line(sqlerrm);
when dup_val_on_index then
error := sqlerrm;
dbms_output.put_line(sqlerrm);
when too_many_rows then
error := sqlerrm;dbms_output.put_line(sqlerrm);
when others then
error := sqlerrm;
dbms_output.put_line('error: '||sqlerrm);
end;
![Page 49: Taller de Plsql 1](https://reader031.vdocument.in/reader031/viewer/2022020808/5571fc41497959916996d8e9/html5/thumbnails/49.jpg)
5/9/2018 Taller de Plsql 1 - slidepdf.com
http://slidepdf.com/reader/full/taller-de-plsql-1 49/58
PL/SQL.
� Notas Adicionales.� alter session set nls_date_format = µdd-mm-yyyy¶
Mayo - 2002
![Page 50: Taller de Plsql 1](https://reader031.vdocument.in/reader031/viewer/2022020808/5571fc41497959916996d8e9/html5/thumbnails/50.jpg)
5/9/2018 Taller de Plsql 1 - slidepdf.com
http://slidepdf.com/reader/full/taller-de-plsql-1 50/58
PL/SQL.
� CURSORES.� PL/SQL utiliza cursores para gestionar lasinstrucciones SQL select.
� Son fragmentos de memoria asignados paraprocesar las instrucciones select.
� Existen cursores explícitos e implícitos
Mayo - 2002
![Page 51: Taller de Plsql 1](https://reader031.vdocument.in/reader031/viewer/2022020808/5571fc41497959916996d8e9/html5/thumbnails/51.jpg)
5/9/2018 Taller de Plsql 1 - slidepdf.com
http://slidepdf.com/reader/full/taller-de-plsql-1 51/58
PL/SQL.
� CURSORES EXPLÍCITOS.� Para procesar instrucciones select que devuelvemás de una fila, se necesitan esta clase decursores, combinados con una estructura debucle.
� Se lo define en la sección DECLARE.
Mayo - 2002
![Page 52: Taller de Plsql 1](https://reader031.vdocument.in/reader031/viewer/2022020808/5571fc41497959916996d8e9/html5/thumbnails/52.jpg)
5/9/2018 Taller de Plsql 1 - slidepdf.com
http://slidepdf.com/reader/full/taller-de-plsql-1 52/58
PL/SQL.
� CURSORES EXPLÍCITOS.� Los pasos para esta operación son lossiguientes:
± Nombrar los cursores.± Abrir para usarlo.
± Extraer datos.± Liberar memoria.
Mayo - 2002
![Page 53: Taller de Plsql 1](https://reader031.vdocument.in/reader031/viewer/2022020808/5571fc41497959916996d8e9/html5/thumbnails/53.jpg)
5/9/2018 Taller de Plsql 1 - slidepdf.com
http://slidepdf.com/reader/full/taller-de-plsql-1 53/58
PL/SQL.
� CURSORES EXPLÍCITOS.
Mayo - 2002
declare
cursor c1 is select ename
from emp;
nombre varchar2(20);
beginopen c1;
fetch c1 into nombre;
while c1%found loop
fetch c1 into nombre;
dbms_output.put_line('dato: '||nombre);end loop;
close c1;
end;
![Page 54: Taller de Plsql 1](https://reader031.vdocument.in/reader031/viewer/2022020808/5571fc41497959916996d8e9/html5/thumbnails/54.jpg)
5/9/2018 Taller de Plsql 1 - slidepdf.com
http://slidepdf.com/reader/full/taller-de-plsql-1 54/58
PL/SQL.
� CURSORES EXPLÍCITOS.
Mayo - 2002
declare
cursor c1 is select ename,empno
from emp;
begin
for i in c1 loop
dbms_output.put_line('dato: '||i.ename||'-'||i.empno);
end loop;
end;
![Page 55: Taller de Plsql 1](https://reader031.vdocument.in/reader031/viewer/2022020808/5571fc41497959916996d8e9/html5/thumbnails/55.jpg)
5/9/2018 Taller de Plsql 1 - slidepdf.com
http://slidepdf.com/reader/full/taller-de-plsql-1 55/58
PL/SQL.
� CURSORES IMPLÍCITOS.� Si se requiere utilizar la instrucción select en elcuerpo del bloque.
� No es necesario declararlo.
Mayo - 2002
![Page 56: Taller de Plsql 1](https://reader031.vdocument.in/reader031/viewer/2022020808/5571fc41497959916996d8e9/html5/thumbnails/56.jpg)
5/9/2018 Taller de Plsql 1 - slidepdf.com
http://slidepdf.com/reader/full/taller-de-plsql-1 56/58
PL/SQL.
� CURSORES IMPLÍCITOS.� Con cada cursor implícito debe existir unapalabra clave into.
� Al igual que los cursores explícitos, las variablesque reciben los datos con la palabra clave into
tienen que contener el mismo tipo de dato quelas columnas asociadas.� Los cursores implícitos sólo pueden devolver
una fila, por lo que debe controlarse con lasexcepciones anteriores.
± No_data_found± too_many_rows
Mayo - 2002
![Page 57: Taller de Plsql 1](https://reader031.vdocument.in/reader031/viewer/2022020808/5571fc41497959916996d8e9/html5/thumbnails/57.jpg)
5/9/2018 Taller de Plsql 1 - slidepdf.com
http://slidepdf.com/reader/full/taller-de-plsql-1 57/58
PL/SQL.
� CURSORES IMPLÍCITOS.
Mayo - 2002
declare
nombre varchar2(20);
beginselect ename into nombre from emp
where empno = 7900;
dbms_output.put_line('dato: '||nombre);
end;
![Page 58: Taller de Plsql 1](https://reader031.vdocument.in/reader031/viewer/2022020808/5571fc41497959916996d8e9/html5/thumbnails/58.jpg)
5/9/2018 Taller de Plsql 1 - slidepdf.com
http://slidepdf.com/reader/full/taller-de-plsql-1 58/58
PL/SQL.
� Qué métodos utilizar?.
Mayo - 2002
� Los cursores explícitos utilizan la variable delsistema PL/SQL: %found o %notfound.
� Dado que el cursor explícito se definemanualmente en la sección declare, el bloquePL/SQL puede estar más estructurado, porque ladefinición se la realiza en un lado y el código delcursor en otro.
� La estructura <<for i... loop>> reduce la
cantidad de código y es más fácil de usar.