58
 Taller de Oracle. Base de Datos Oracle. SQL PL/SQL Develop er Forms. Develop er Rep ort.

Taller de Plsql 1

Embed Size (px)

Citation preview

Page 1: Taller de Plsql 1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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.