Está en la página 1de 83

UT6ProgramacionBBDD.

pdf

pilind

Bases de Datos

1º Desarrollo de Aplicaciones Multiplataforma

MAESTRE DE CALATRAVA

Reservados todos los derechos.


No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-3265212

Reservados todos los derechos.


No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
Nos encontramos ante un gestor que va
incorporado en Oracle para solventar las grandes
limitaciones que teníamos con los editores SQL,
en cuanto al control de las secuencias de
ejecución de instrucciones, el uso de variables, la

Reservados todos los derechos.


gestión de posibles errores, etc.

Los programas creados con PL/SQL los podemos


almacenar en nuestra base de datos como
cualquier otro objeto quedando disponibles para
los usuarios creando paquetes, funciones o
procedimientos. El uso del lenguaje PL/SQL es
imprescindible para construir disparadores de
bases de datos (triggers).

Descarga la app de Wuolah desde tu store favorita


a64b0469ff35958ef4ab887a898bd50bdfbbe91a-3265212
No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
 PL/SQL soporta el lenguaje de consultas, es
decir, el SQL, pero no soporta órdenes de
definición de datos (DDL) ni de control de datos
(DCL). Sus características son:

Reservados todos los derechos.


◦ El uso de variables
◦ Estructuras de control de flujo y toma de decisiones
◦ Control de excepciones
◦ Reutilización de código a través de paquetes,
procedimientos y funciones.

Descarga la app de Wuolah desde tu store favorita


a64b0469ff35958ef4ab887a898bd50bdfbbe91a-3265212
No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
 Los programas van a poder escribir
procedimientos o funciones, o bien pueden
escribir bloques de código anónimo como
scripts para ser llamados desde SQL*Plus.

Reservados todos los derechos.


 El código PL/SQL es ejecutado en el servidor,
lo que supone un ahorro de recursos a los
clientes.

Descarga la app de Wuolah desde tu store favorita


a64b0469ff35958ef4ab887a898bd50bdfbbe91a-3265212
No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
 Cuando se escribe código en PL/SQL, este debe estar
agrupado en unidades denominadas bloques de código.
El cual puede contener otros subbloques.

Reservados todos los derechos.


 Un bloque de código queda delimitado por las palabras
reservadas BEGIN y END; y se ejecuta tras introducir el
carácter /

 Un bloque de código se guarda en un fichero .SQL para


su posterior uso, o guardarlo en la BD para que pueda
ser ejecutado por cualquier aplicación.

a64b0469ff35958ef4ab887a898bd50bdfbbe91a-3265212
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-3265212
Descarga la app de Wuolah desde tu store favorita

Reservados todos los derechos.


No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
 En el apartado DECLARE se declaran objetos
locales, es decir, todas las variables,
constantes, cursores y excepciones definidas
por el usuario.

Reservados todos los derechos.


 Entre BEGIN y END se incluyen todas las
sentencias de control de PL/SQL:
◦ Secuencias
◦ Alternativas
◦ Iteraciones o bucles.

Descarga la app de Wuolah desde tu store favorita


a64b0469ff35958ef4ab887a898bd50bdfbbe91a-3265212
No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
DECLARE
v_num_empleados number(2);
BEGIN
insert into depart values(99,'provisional',null);
update emple set dept_no=99 where

Reservados todos los derechos.


dept_no=20;
v_num_empleados:=SQL%ROWCOUNT;
delete from depart where dept_no=20
DBMS_OUTPUT.PUT_LINE (v_num_empleados ||
'Empleados cambiados a provisional');
END;
/

Descarga la app de Wuolah desde tu store favorita


a64b0469ff35958ef4ab887a898bd50bdfbbe91a-3265212
No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
NUMBER (Numérico): Almacena números enteros o de
punto flotante, virtualmente de cualquier longitud,
aunque puede ser especificada la precisión (número de
dígitos) y la escala, que es la que determina el número

Reservados todos los derechos.


de decimales. NUMBER (5,3) tendría una precisión de 5
dígitos de los cuales 3 serían posiciones decimales.

CHAR (Carácter): Almacena datos de tipo carácter con un


tamaño máximo de 32.767 bytes y cuyo valor de
longitud por defecto es 1.

VARCHAR2 (Carácter de longitud variable): Almacena


datos de tipo carácter empleando sólo la cantidad
necesaria aún cuando la longitud máxima sea mayor.

BOOLEAN (lógico): Se emplea para almacenar valores


TRUE o FALSE.

a64b0469ff35958ef4ab887a898bd50bdfbbe91a-3265212
No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
DATE (fecha): Almacena datos de tipo fecha. Las fechas
se almacenan internamente como datos numéricos, por
lo que es posible realizar operaciones aritméticas con
ellas.

Reservados todos los derechos.


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. PL/SQL también permite la creación de
tipos personalizados (registros) y colecciones (tablas
de PL/SQL).

Descarga la app de Wuolah desde tu store favorita


a64b0469ff35958ef4ab887a898bd50bdfbbe91a-3265212
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-3265212
Descarga la app de Wuolah desde tu store favorita

Reservados todos los derechos.


No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
%TYPE Y %ROWTYPE son atributos especiales
que permiten declarar variables basadas en el
tipo de otras variables previamente
declaradas.

Reservados todos los derechos.


Por ejemplo, se puede declarar una variable del
mismo tipo que un campo de la base de
datos:
nombreCliente Clientes.Nombre%TYPE;
O haciendo referencia a toda una fila completa
de la tabla:
regCliente Clientes%ROWTYPE;

Descarga la app de Wuolah desde tu store favorita


a64b0469ff35958ef4ab887a898bd50bdfbbe91a-3265212
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-3265212

Reservados todos los derechos.


No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
 Las constantes necesitan ser inicializadas en
la declaración de las mismas y no se les
puede aginar ningún otro valor durante la
ejecución del programa:

Reservados todos los derechos.


 También se pueden asignar valores
tomándolos desde una consulta:

Descarga la app de Wuolah desde tu store favorita


a64b0469ff35958ef4ab887a898bd50bdfbbe91a-3265212
No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
Si se ha declarado una variable registro como:
regCliente Clientes%ROWTYPE; se puede
asignar el valor de una fila de una consulta.

Reservados todos los derechos.


En este caso y en el anterior hay que tener
cuidado que la consulta no devuelva más de
una fila, porque sino nos daría un error.

Descarga la app de Wuolah desde tu store favorita


a64b0469ff35958ef4ab887a898bd50bdfbbe91a-3265212
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-3265212
Descarga la app de Wuolah desde tu store favorita

Reservados todos los derechos.


No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-3265212

Realizar actividad 6.1

Reservados todos los derechos.


No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
Es necesario activar la variable SERVEROUTPUT
de la siguiente forma una vez por sesión:
SET SERVEROUTPUT ON
Una vez activada podemos mostrar por

Reservados todos los derechos.


pantalla el contenido de una cadena bien
entre comillas simples o bien el contenido de
una variable:
dbms_output. Put_line (Cadena de salida);
dbms_output. Put_line ('Hola alumnos');
dbms_output. Put_line (nombreCliente);

Descarga la app de Wuolah desde tu store favorita


a64b0469ff35958ef4ab887a898bd50bdfbbe91a-3265212
No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
Es muy útil para ello el operador que concatena
cadenas. Ejemplos:

Reservados todos los derechos.


Descarga la app de Wuolah desde tu store favorita
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-3265212
No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
Para leer valores por teclado se hace con una
asignación a la variable poniendo el símbolo
& seguido de la cadena de caracteres que se
mostrará al pedir el valor. Dicha cadena irá

Reservados todos los derechos.


sin espacios en blanco, se puede usar el
guión bajo y no debe ser muy larga.

Descarga la app de Wuolah desde tu store favorita


a64b0469ff35958ef4ab887a898bd50bdfbbe91a-3265212
No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
triangulo.sql
 SET SERVEROUTPUT ON
 -- Este código nos pide introducir el valor de Altura, Base

Reservados todos los derechos.


 -- y calcula el área de un triángulo.
 DECLARE
 Altura INT;
 Base INT;
 BEGIN
 Altura:=&INTRODUCE_EL_VALOR_DE_ALTURA;
 Base:=&INTRODUCE_EL_VALOR_DE_BASE;
 DBMS_OUTPUT.PUT_LINE ('UN TRIANGULO DE: || Base ||
 ' Y DE ALTURA: ' || Altura || 'TIENE UN AREA DE: ' ||
Base*Altura/2);
 END;
 /

a64b0469ff35958ef4ab887a898bd50bdfbbe91a-3265212
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-3265212

Descarga la app de Wuolah desde tu store favorita


Realizar actividad 6.2

Reservados todos los derechos.


No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-3265212
Descarga la app de Wuolah desde tu store favorita

Reservados todos los derechos.


No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
 Secuencia: Ejecución de una instrucción tras
otra.

 Selección: Ejecución de una de dos

Reservados todos los derechos.


instrucciones (o conjuntos), según el valor de
una variable o expresión booleana.

 Iteración: Ejecución de una instrucción (o


conjunto) mientras una variable o expresión
booleana sea 'verdadera'. También se conoce
como ciclo o bucle.

Descarga la app de Wuolah desde tu store favorita


a64b0469ff35958ef4ab887a898bd50bdfbbe91a-3265212
No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
 Selección, alternativa o condicional. Se trata de
evaluar una expresión y en función del valor se

Reservados todos los derechos.


hacen unas acciones u
 otras. Sintaxis:

a64b0469ff35958ef4ab887a898bd50bdfbbe91a-3265212
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-3265212
Descarga la app de Wuolah desde tu store favorita

Reservados todos los derechos.


No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-3265212
Descarga la app de Wuolah desde tu store favorita

Reservados todos los derechos.


No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
Es similar al switch del lenguaje C, evalúa cada
condición hasta encontrar alguna que se
cumpla. La sintaxis es la siguiente:

Reservados todos los derechos.


Descarga la app de Wuolah desde tu store favorita
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-3265212
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-3265212

Reservados todos los derechos.


No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-3265212

Descarga la app de Wuolah desde tu store favorita


Realizar actividad 6.3, 6.4 y 6.5

Reservados todos los derechos.


No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
 Los bucles repiten una sentencia o un grupo
de sentencias varias veces. Hay varios tipos de
bucles, en PL/SQL existen tres tipos:

Reservados todos los derechos.


◦ Bucle básico LOOP. Acciones repetitivas sin
condiciones globales.

◦ Bucle FOR. Acciones repetitivas basándose en un


contador. Número conocido de vueltas.

◦ Bucle WHILE. Basándose en una condición.

Descarga la app de Wuolah desde tu store favorita


a64b0469ff35958ef4ab887a898bd50bdfbbe91a-3265212
No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
 Este bucle estaría repitiendo infinitamente las
instrucciones. No es común programar un bucle
infinito, por lo que conviene evaluar una condición
dentro del mismo que cuando se cumpla provoque

Reservados todos los derechos.


la salida del mismo. Por lo que se suele combinar
con la condición WHEN o con la condición IF.

Descarga la app de Wuolah desde tu store favorita


a64b0469ff35958ef4ab887a898bd50bdfbbe91a-3265212
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-3265212

Reservados todos los derechos.


No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
 Se va a estar ejecutando mientras que la
condición que se evalúa sea cierta, por lo que
dentro del cuerpo del bucle debe haber
alguna instrucción que cambie dicha

Reservados todos los derechos.


condición.

Descarga la app de Wuolah desde tu store favorita


a64b0469ff35958ef4ab887a898bd50bdfbbe91a-3265212
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-3265212
Descarga la app de Wuolah desde tu store favorita

Reservados todos los derechos.


No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
 Cuando se conoce de antemano el número de
repeticiones o iteraciones, el bucle para
hacerlo es FOR.

Reservados todos los derechos.


Descarga la app de Wuolah desde tu store favorita
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-3265212
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-3265212

100:
Ejemplo que imprime los números del 0 al

Reservados todos los derechos.


No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
 Ejemplo que imprime los números del 100 al 0:

Reservados todos los derechos.


 Realizar actividad 6.6, 6.7 y 6.8

Descarga la app de Wuolah desde tu store favorita


a64b0469ff35958ef4ab887a898bd50bdfbbe91a-3265212
No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
 PL/SQL permite que unas determinadas
sentencias formen parte de lo que se llama yn
procedimiento o función, permitiendo así la
reutilización de código.

Reservados todos los derechos.


 Tan solo usando el nombre del procedimiento
o función se ejecutarán todas las instrucciones
que lo forman y si utilizamos valores a dichos
valores se les llama parámetros.
 Una vez creados, los procedimientos y
funciones forman parte de la base de datos y
se pueden volver a utilizar tantas veces como
se quiera.

Descarga la app de Wuolah desde tu store favorita


a64b0469ff35958ef4ab887a898bd50bdfbbe91a-3265212
No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
 Los triggers (disparadores) son unos
procedimientos especiales que se invocan

Reservados todos los derechos.


automáticamente en respuesta a un evento,
por ejemplo ante una inserción, borrado o
modificación en una tabla de la BBDD.

Descarga la app de Wuolah desde tu store favorita


a64b0469ff35958ef4ab887a898bd50bdfbbe91a-3265212
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-3265212

Reservados todos los derechos.


No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-3265212
Descarga la app de Wuolah desde tu store favorita

Reservados todos los derechos.


No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
 Los parámetros tienen un nombre para
identificarlos, pueden ser IN, OUT o IN OUT,

Reservados todos los derechos.


si se omite por defecto son IN, y son de un
tipo de dato.
 Existen dos tipos de parámetros:
◦ Formal: es el nombre del parámetro definido en la
función .
◦ Actual: Son los valores que tienen los parámetros
cuando se llama a la función.

Descarga la app de Wuolah desde tu store favorita


a64b0469ff35958ef4ab887a898bd50bdfbbe91a-3265212
No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
 IN: El parámetro es de entrada y cualquier
modificación realizada en el procedimiento
no afectará a su valor fuera del
procedimiento.

Reservados todos los derechos.


 OUT: El parámetro es de salida, en el
procedimiento se la va a asignar un valor a
este parámetro pero no va a afectar al
parámetro formal.
 IN OUT: El parámetro se usa tanto para
entrada como para salida.

Descarga la app de Wuolah desde tu store favorita


a64b0469ff35958ef4ab887a898bd50bdfbbe91a-3265212
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-3265212

Reservados todos los derechos.


No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-3265212

Descarga la app de Wuolah desde tu store favorita


Realizar actividad 6.9 y 6.10

Reservados todos los derechos.


No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
 Son parecidas a los procedimientos con la
diferencia de que va a devolver un resultado
que será de un tipo de dato.

Reservados todos los derechos.


Descarga la app de Wuolah desde tu store favorita
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-3265212
No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
 Al menos debe haber una orden RETURN en el
código de la función que devuelva un valor
del mismo tipo que fue declarada.
Las funciones se pueden usar en otras

Reservados todos los derechos.



expresiones con tan solo poner su nombre y
los parámetros, y es sustituida en la
expresión por el valor devuelto por la
función.

Descarga la app de Wuolah desde tu store favorita


a64b0469ff35958ef4ab887a898bd50bdfbbe91a-3265212
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-3265212


un programa como esta:
A:=SUMANUMEROS(4)*3;
Ahora se puede hacer una instrucción desde

Reservados todos los derechos.


No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
 Se puede llamar a un procedimiento o una
función desde una bloque anónimo,
simplemente poniendo su nombre, y los
parámetros actuales.

Reservados todos los derechos.


Descarga la app de Wuolah desde tu store favorita
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-3265212
No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
 Por supuesto, una vez creada una función o
procedimiento, se puede utilizar en nuevos
procedimientos y funciones. También
podemos invocar a un procedimiento desde

Reservados todos los derechos.


el intérprete de comandos usando las
órdenes CALL o EXEC:

Descarga la app de Wuolah desde tu store favorita


a64b0469ff35958ef4ab887a898bd50bdfbbe91a-3265212
No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
 Pero para llamar a una función debemos
incluirla en una expresión, por ejemplo, para
imprimir el valor numérico que devuelve la
función desde el intérprete de comandos:

Reservados todos los derechos.


 Este sería el resultado:

 Realizar actividad 6.11 y 6.12

Descarga la app de Wuolah desde tu store favorita


a64b0469ff35958ef4ab887a898bd50bdfbbe91a-3265212
No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
 Nos interesa trabajar con la información
almacenada en la BD, por lo que debemos

Reservados todos los derechos.


integrar en los programas PL/SQL sentencias
SQL.

a64b0469ff35958ef4ab887a898bd50bdfbbe91a-3265212
No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
 El resultado de la consulta debe ser una sola
fila. Además debe coincidir en número y tipo
la lista de columnas que devuelve la consulta
con el número de variables, o los campos de

Reservados todos los derechos.


la variable registro.
 Ejemplo:

Descarga la app de Wuolah desde tu store favorita


a64b0469ff35958ef4ab887a898bd50bdfbbe91a-3265212
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-3265212

Ejemplo:

Descarga la app de Wuolah desde tu store favorita

Reservados todos los derechos.


No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-3265212
Descarga la app de Wuolah desde tu store favorita

Reservados todos los derechos.


No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-3265212

Reservados todos los derechos.


No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
 El ejemplo anterior aumenta en un 10% los
productos de la gama ‘Herramientas’

Reservados todos los derechos.


Descarga la app de Wuolah desde tu store favorita
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-3265212
No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
 Los cursores son áreas de memoria que
almacenan datos extraídos de la BD mediante
una consulta SELECT o por manipulación de
datos con actualización o inserción (DML).

Reservados todos los derechos.


 Hay dos tipos de cursores: explícitos e
implícitos.
 Los implícitos no necesitan ser declarados,
están en todas las consultas DML y SELECT
que devuelven una sola fila. Si devuelve más
de una fila se produce un error que se debe
tratar en el bloque de (EXCEPTION).

Descarga la app de Wuolah desde tu store favorita


a64b0469ff35958ef4ab887a898bd50bdfbbe91a-3265212
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-3265212

Sintaxis de un curso explícito:

Descarga la app de Wuolah desde tu store favorita

Reservados todos los derechos.


No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
 Para trabajar con cursores en el bloque de
código va a ser necesario realizar varias

Reservados todos los derechos.


operaciones: apertura, recuperación y cierre.
◦ OPEN Nombre_del_cursor;
◦ FETCH Nombre_del_cursor INTO {[var1, var2, …] |
nom_registro};
◦ CLOSE Nombre_del_cursor;
 Para comprobar el estado de un cursor se
pueden comprobar sus atributos poniendo:
◦ NombredelCursor % atributo_deseado;

a64b0469ff35958ef4ab887a898bd50bdfbbe91a-3265212
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-3265212
Descarga la app de Wuolah desde tu store favorita

Reservados todos los derechos.


No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-3265212
Descarga la app de Wuolah desde tu store favorita

Reservados todos los derechos.


No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
Reservados todos los derechos.
 No es necesario ni abrir ni cerrar el cursor.
 La VariebleRegistro se declara implícitamente, sólo
está disponible dentro del bucle FOR.
 En cada iteración del bucle de manera implícita se
hace una operación FETCH sobre la variable
registro.
 El bucle finaliza automáticamente cuando recorre
todas las filas del cursor

Descarga la app de Wuolah desde tu store favorita


a64b0469ff35958ef4ab887a898bd50bdfbbe91a-3265212
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-3265212

Reservados todos los derechos.


No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
 El código se desarrolla en el bloque
EXCEPTION, donde se intentará controlar los
errores posibles.

Reservados todos los derechos.


Descarga la app de Wuolah desde tu store favorita
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-3265212
No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
 En cada claúsula WHEN se identifica la
excepción previsible que es conocida y en
WHEN OTHERS cualquier excepción que no
corresponda con las anteriores.

Reservados todos los derechos.


 Ejemplo:

Descarga la app de Wuolah desde tu store favorita


a64b0469ff35958ef4ab887a898bd50bdfbbe91a-3265212
No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
 Al capturar la excepción no se pierde el
control del programa.
 Cuando ORACLE lanza un excepción, esta es
identificada por un número y tiene asociado

Reservados todos los derechos.


un mensaje, que son asociadas a dos
funciones predefinidas por ORACLE SQLCODE
y SQLERR, de esta forma se puede capturar la
EXCEPTION en el apartado OTHERS, y mostrar
el contenido de estas variables.

Descarga la app de Wuolah desde tu store favorita


a64b0469ff35958ef4ab887a898bd50bdfbbe91a-3265212
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-3265212

Reservados todos los derechos.


No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-3265212

SQL Plus:

Descarga la app de Wuolah desde tu store favorita


Ejecución de ambos códigos en la consola

Reservados todos los derechos.


No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
 Algunos valores de excepciones que pueden
interceptarse son:
◦ CASE_NOT_FOUND
◦ CURSOR_ALREADY_OPEN
◦ INVALLID_CURSOR

Reservados todos los derechos.


◦ INVALID_NUMBER o VALUE_ERROR
◦ VALUE_ERROR
◦ LOGIN_DENIED
◦ NOT_LOGGED_ON
◦ NO_DATA_FOUND
◦ TOO_MANY_ROWS
◦ TIMEOUT_ON_RESOURCE
◦ ZERO_DIVIDE
◦ OTHERS

Descarga la app de Wuolah desde tu store favorita


a64b0469ff35958ef4ab887a898bd50bdfbbe91a-3265212
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-3265212
Descarga la app de Wuolah desde tu store favorita

Reservados todos los derechos.


No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-3265212

Reservados todos los derechos.


No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
 Un trigger es código PL/SQL asociado a una
tabla y se ejecuta automáticamente como
reacción a una operación DML específica
(INSERT, UPDATE o DELETE) sobre dicha tabla.

Reservados todos los derechos.


Descarga la app de Wuolah desde tu store favorita
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-3265212
No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
 Tras poner el nombre del TRIGGER, a
continuación viene la temporalidad, es decir,
cuando se ejecuta el trigger: BEFORE o AFTER.
 Lo siguiente es indicar la operación con la

Reservados todos los derechos.


que se desea que salte la ejecución del
trigger, si no se indica nada sería con
cualquier operación DML sobre la tabla.
 A continuación se indica si es disparador es
de fila o de orden.
 Finalmente el cuerpo del programa entre
BEGIN y END.

Descarga la app de Wuolah desde tu store favorita


a64b0469ff35958ef4ab887a898bd50bdfbbe91a-3265212
No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
 Cuando el trigger puede ser disparado por
varias operaciones, se puede conocer qué
operación lo lanzó, para ello usamos los
predicados condicionales en combinación con

Reservados todos los derechos.


sentencias IF. Los predicados son:
◦ Inserting: TRUE si ha sido disparado por un INSERT.
◦ Deleting: TRUE si ha sido disparado por DELETE.
◦ Updating: TRUE si ha sido disparado por UPDATE.
◦ Updating (columna): TRUE si ha sido disparado por
UPDATE y la columna ha sido modificada.

Descarga la app de Wuolah desde tu store favorita


a64b0469ff35958ef4ab887a898bd50bdfbbe91a-3265212
No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
 Si se usa la cláusula FOR EACH ROW, es un
disparador con nivel de fila y se ejecuta el

Reservados todos los derechos.


código una vez por cada fila.
 Dentro del trigger podemos acceder a la
información de la fila que se está procesando
en ese momento, para ello PL/SQL nos facilita
dos pseudo-registros: old y new, ambos
serán registros del mismo tipo que la tabla,
es decir, tabla%ROWTYPE

a64b0469ff35958ef4ab887a898bd50bdfbbe91a-3265212
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-3265212
Descarga la app de Wuolah desde tu store favorita

Reservados todos los derechos.


No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-3265212
Descarga la app de Wuolah desde tu store favorita

Reservados todos los derechos.


No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
 En el ejemplo anterior, cada vez que se
modifica una cantidad, se inserta o borra un
registro, hace una entrada de texto en la
tabla AudiPagos que solo contiene un campo

Reservados todos los derechos.


VARCHAR.

Descarga la app de Wuolah desde tu store favorita


a64b0469ff35958ef4ab887a898bd50bdfbbe91a-3265212
No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
 Puede haber varios triggers sobre una misma
tabla. PL/SQL establece el siguiente orden en la
ejecución de los triggers: Los disparadores se
activan al ejecutarse la sentencia SQL:

Reservados todos los derechos.


1. Si existe, se ejecuta el trigger de tipo BEFORE
con nivel de orden.
2. Para cada fila a la que afecte la orden:
1. Si ejecuta si existe, el disparador de tipo BEFORE con
nivel de fila.
2. Se ejecuta la propia orden.
3. Se ejecuta, si existe, el disparador de tipo AFTER con
nivel de fila.
3. Se ejecuta, si existe, el disparador de tipo
AFTER con nivel de orden.

a64b0469ff35958ef4ab887a898bd50bdfbbe91a-3265212

También podría gustarte