0% encontró este documento útil (0 votos)
104 vistas119 páginas

Introduccion A PLSQL

Este documento introduce PL/SQL como una extensión del lenguaje SQL que permite agregar características de programación a SQL. Explica la estructura básica de bloques PL/SQL y sus secciones (declarativa, ejecutable, excepciones). También cubre tipos de bloques como procedimientos y funciones, y beneficios de PL/SQL como mejor rendimiento e integración con SQL.

Cargado por

jorge
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
104 vistas119 páginas

Introduccion A PLSQL

Este documento introduce PL/SQL como una extensión del lenguaje SQL que permite agregar características de programación a SQL. Explica la estructura básica de bloques PL/SQL y sus secciones (declarativa, ejecutable, excepciones). También cubre tipos de bloques como procedimientos y funciones, y beneficios de PL/SQL como mejor rendimiento e integración con SQL.

Cargado por

jorge
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

INTRODUCCION AL PL/SQL

CODIGO PL/SQL

• Representa la extensión del lenguaje de procedimiento para el SQL.


• Integra perfectamente código procedural con SQL.
• Agrega características de programación al Lenguaje de Consulta
Estructurado (SQL).
• Provee una estructura de bloques para unidades ejecutable de código.
• Provee características de procedimientos, tales como:
➢ Variables, contantes y tipos de datos.
➢ Estructuras de control, tales como, declaraciones condicionales y
loops.
➢ Unidades de programa reusable. Son creadas una vez y ejecutadas
muchas veces.
BENEFICIOS DEL PL/SQL

• Integración de Construcciones de procedimientos con SQL.


• Performance mejorada.
• Desarrollo de programa modularizados.
• Portable.
• Manejo de excepciones.
ESTRUCTURA DE BLOQUES PL/SQL
ESTRUCTURA DE BLOQUES PL/SQL

IMPORTANTE: La palabra clave END, todas las instrucciones SQL y


todas las declaraciones PL/SQL deben terminar
con un “punto y coma (;)”

Sección Descripción Inclusion


Contiene declaraciones de todas las variables, constantes,
DECLARE
cursores, y excepciones definidas por el usuario Opcional
(declarative)
referenciadas en la sección ejecutables y de excepciones.
Contiene instrucciones SQL para extraer data desde la BD.
BEGIN..END
Contiene instrucciones PL/SQL para manipular la data en el Obligatorio
(Ejecutable)
bloque
EXCEPTION Especifica las acciones que podría desarrollarse cuando un
Opcional
(Excepcion) error u anormal situación ocurre en la sección ejecutable|
TIPOS DE BLOQUE PL/SQL

Bloques anónimos: Son bloques sin nombre. Son declarados online y ejecutados en el mismo
instante. No son almacenados en la BD.
TIPOS DE BLOQUE PL/SQL

Usos comunes:

•Procedimientos: Objetos que poseen un nombre y que contienen declaraciones SQL y


PL/SQL.
Ejecutar una serie de consultas, modificaciones en diferentes tablas o cálculos entre ellas
que serían complejas en una única instrucción SQL y no requiere de un valor de retorno.

•Funciones: Objetos que poseen un nombre y que contienen declaraciones SQL y


PL/SQL. A diferencia de los procedimientos una función entrega un valor de un tipo de
datos especificado .
Cálculo de un valor que será usado en una consulta SQL (como campo de un resultado
SELECT, asignación de valor en un UPDATE o como filtro en un WHERE) a partir de
parámetros de entrada, ya sea accediendo a datos de diferentes tablas o bien a partir
únicamente de los parámetros de entrada.
EJECUTANDO UN BLOQUE

SQL> DECLARE
v_fname varchar2(20);
BEGIN
select first_name into v_fname
from employees
where employee_id=100;
END;
/

SQL> PL/SQL procedure successfully completed.


HABILITANDO LA SALIDA DE UN BLOQUE (OUTPUT)

1. Para habilitar la salida en SQLPLUS, ejecute el siguiente comando antes de ejecutar


el bloque PL/SQL

2. Usamos un package predefinido por Oracle para publicar las salidas.


- DBMS_OUTPUT.PUT_LINE
HABILITANDO LA SALIDA DE UN BLOQUE (OUTPUT)

SQL> set serveroutput on


SQL > DECLARE
v_fname varchar2(20);
begin
select first_name into v_fname from employees
where employee_id=100;
dbms_output.put_line('the first name of the employee is'||
v_fname);
end;
/
the first name of the employee is Steven

PL/SQL procedure successfully completed.


PRACTICA 6.1
2 DECLARANDO VARIABLES PL/SQL
DECLARANDO E INICIALIZANDO VARIABLES

Las variables pueden ser usadas como:

• Almacén temporal de datos.


• Manipulación de valores almacenados.
• Uso de datos almacenados repetidamente.
REQUERIMIENTOS PARA LOS NOMBRES DE LAS VARIABLES

Un nombre de variable :

• Debe comenzar con una letra

• Puede incluir letras y números

• Puede incluir caracteres especiales ($, _ and #)

• Debe contener no mas de 30 caracteres.

• No deben incluir palabras reservadas.


MANEJANDO VARIABLE

Las variables son :

• Declaradas y (opcionalmente) inicializadas en la sección


declarativa.

• Usadas y re-asignado de valores en la sección ejecutable.

• Pasada como parámetro a un subprograma PL/SQL.

• Usado para mantener un resultado de un subprograma PL/SQL.


DECLARANDO E INICIALIZANDO VARIABLES
TIPOS DE VARIABLE

Maneja un único valor. El valor depende del tipo de dato de la


Scalar
variable. (carácter, numérico, fecha, etc).
Manejan un tipo de datos llamado “pointers” (punteros). El
Reference cual apunta a una ubicación de almacenamiento de
memoria privada (cursores).
Almacena valores del tipio “locators”, el cual especifica una
LOB
ubicación de un gran objeto, tales como, imágenes y
(Large Object Binary)
documentos almacenados fuera de una tabla.
A diferencia del tipo de datos “Scalar” tienen un componente
Composite interno representando múltiples tipos de datos bajo un solo
tipo compuesto.
TIPO DE DATOS SCALAR

• Mantiene un único valor.


• No tiene componentes internos
GUIA PARA DECLARAR E INICIALIZAR VARIABLES

CONVENCION DE NOMBRES
GUIA PARA DECLARAR E INICIALIZAR VARIABLES

• Siga consistentemente la convención de nombres.


• Use identificadores significativos para las variables
• Inicialice las variables con el operador (:=) o la palabra clave
DEFAULT.

• Declare un identificador por línea, para una mejor lectura y


mantenimiento del código.
GUIA PARA DECLARAR E INICIALIZAR VARIABLES

• Evite usar nombres de columnas como identificadores

• Use la Constraint de NOT NULL cuando la variable debe obligatoriamente tener un valor
DECALRANDO VARIABLES DEL TIPO SCALAR
ATRIBUTO %TYPE

• Es usado para declarar una variable de acuerdo a:

➢ Una definición de una columna de la base de datos.


➢ Otra variable ya declarada.

• Esta prefijada con:

➢ El nombre de la columna y tabla de la base de datos.


➢ El nombre de la variable declarada.
DECLARANDO VARIABLES CON %TYPE

• Sintaxis:

• Ejemplos:
DECLARANDO VARIABLES LOGICAS

• Solo pueden ser asignado los siguientes valores: TRUE, FALSE y NULL.
• Expresiones condicionales usan operadores lógicos AND, OR y el
operador NOT para chequear el valor de las variables.
• Números, caracteres y fechas pueden ser usados para entregar valores
booleanos.
• Las variables siempre producen un valor : TRUE, FALSE o NULL.
VARIABLES DEL TIPO BIND

• Las variables Bind, son:

• Creadas en el ambiente (SQLPLUS) y no en la sección declarativa.


• Son llamadas variables del host.
• Creadas con la palabra clave VARIABLE.
• Son usadas en comandos SQL y bloques PL/SQL.
• Pueden ser accedidas inclusos después que el bloque
PL/SQL es ejecutado.
• Se referencian anteponiendo “:”

• Los valores que almacenan pueden ser impresos en pantalla con el comando PRINT.

• Las variables Bind, son variables que se crean en el Sqlplus. Es por esto, que muchas
veces son llamadas variables del host.
REFERENCIANDO VARIABLES DEL TIPO BIND

• Ejemplo:
REFERENCIANDO VARIABLES DEL TIPO BIND

• Ejemplo:
REFERENCIANDO VARIABLES DEL TIPO BIND

• Ejemplo:

NOTA: Para desplegar este tipo de variables, use el comando PRINT sin una variable.
USO DE COMANDO “AUTOPRINT “

Muestra el valor de la variable bind sin la necesidad del comando PRINT


PRACTICA 6.2
3 ESCRIBIR DECLARACIONES EJECUTABLES
SINTAXIS Y ALGUNOS CONSEJOS

Usando literales:

• Carácteres y fechas deben ser encerrados entre comillas simples.


• Números pueden ser simples valores o notación cientifica.

Algunas definiciones: Literales: cualquier valor que se asigna a una variable es un


literal. Cualquier carácter, numeral, Boolean, o el valor de fecha
que no es un identificador es un literal.
Los literales se clasifican como:
- Literales de caracteres: todos las cadenas de literales tienen el
tipo de datos CHAR o VARCHAR2 y se llaman, por lo tanto,
literales de caracteres (por ejemplo, John y 12C).
- Literales numéricos: un literal numérico representa un valor
entero o real (por ejemplo, 428 y 1.276).
- Literales booleanos: los valores que se asignan a variables
booleanas son literales booleanos. VERDADERO, FALSO y NULO
son literales booleanos o palabras clave.
COMENTANDO CODIGO

• Para una línea de código inicie la linea con : --


• Para comentar un bloque use: Para empezar /* y para terminar */
FUNCIONES SQL EN PL/SQL

• La mayoría de las funciones revisadas en SQL, están disponibles en


PL/SQL:
Funciones de única file, funciones de números y de carácter, de
conversión de tipo de fecha.

• Funciones no disponibles:
• DECODE
• Funciones de grupo: AVG, MIN, MAX, COUNT, SUM, STDDEV y
VARIANCE
FUNCIONES SQL EN PL/SQL: Ejemplos

• Obteniendo el largo de un string:

• Obteniendo el número de meses que un empleado ha trabajado:


CONVERSION DE TIPO DE DATOS

• Existen dos tipos


• Explícitos
• Implícitos Conversiones implícitas pueden ser entre:
• Funciones: • Caracteres y números
• Caracteres y fechas

• Ejemplo:
CONVERSION DE TIPO DE DATOS
BLOQUES ANIDADOS

• Los bloques PL/SQL pueden ser anidados:

• La sección ejecutable (BEGIN-END) pueden


contener bloques anidados.
• La sección de Excepción también puede
tener bloques anidados.
BLOQUES ANIDADOS: Ejemplos
ALCANCE Y VISIBILIDAD DE LAS VARIABLES

RESULTADO:
ALCANCE Y VISIBILIDAD DE LAS VARIABLES
USANDO ETIQUETA

RESULTADO:

Nota: el Etiquetado puede usarse en cualquier bloque. No estas limitado a los bloques externos
PREGUNTA: Determine el ámbito de acción esta variable
PREGUNTA: Determine el ámbito de acción de las variables

1. Valor de v_message en la posición 1


CLERK not eligible for commission
2. Valor de v_total_comp en posición 2
Error. v_total_comp is not visible here because it is defined within the inner block.
3. Valor de v_comm en posición 1
0
4. Valor de outer.v_comm en posición 1
12000
5. Valor de v_comm en posición 2
15000
6. Valor de v_message en posición 2
SALESMANCLERK not eligible for commission
OPERADORES EN PL/SQL

• Lógicos
• Aritméticos
• Concatenación Lo mismo que en SQL
• Paréntesis para controlar el orden de
las operaciones
OPERADORES EN PL/SQL: Ejemplos

• Incrementar un contador para un loop

• Establecer el valor de una booleano

• Validar si una variable contiene un valor nulo

Nota:
• Comparar nulos siempre conduce a nulo.
• Aplicar el operador lógico NOT a un nulo, conduce a un Nulo.
• En una línea de control condicional, si la condición resulta en nulo,
entonces su secuencia asociada no es ejecutada.
PRACTICA 6.3
4. Instrucciones SQL en Programas PL/SQL
INSTRUCCIONES SQL EN PL/SQL

• Usamos SELECT para obtener datos de la base de datos.

• Hacemos cambios a los datos usando comandos DML.

• Controlamos las transacciones usando: COMMIT, ROLLBACK o SAVEPOINT.


INSTRUCCIÓN SELECT EN PL/SQL

• Extraiga datos de la base de datos usando la instrucción SELECT

• Sintaxis:

• Termina cada instrucción con un “;”


• Cada valor obtenido debe almacenarse en una variable usando la clausula: INTO
• Misma cantidad de clausulas INTO que columnas en el SELECT.
INSTRUCCIÓN SELECT EN PL/SQL

• La clausula INTO es requerida.


• La query debe retorna un solo resultado. (Excepciones NO_DATA_FOUND y TOO_MANY_ROWS)
OBTENIENDO DATOS: Ejemplo

• Obtener hire_date y salary para un empleado


OBTENIENDO DATOS: Ejemplo

• Retorna la suma de salarios para todos los empleados en el un departamento.

NOTA: No esta permitido, V_sum_sal := SUM([Link]);


ASIGNACIONES AMBIGUAS

DECLARE
last_name VARCHAR2(25) := 'King';
BEGIN
DELETE FROM employees
WHERE last_name = last_name;
. . .
NORMAS PARA LOS NOMBRES

• Use una convención de nombres para evitar ambigüedades en la


clausula WHERE.

• Evite usar nombre de columnas de la base de datos como


identificador.

• Se producirán errores de sintaxis debido a que PL/SQL chequea


primero las columnas de las tablas en la base de datos.

• Los nombres de las variables locales y parámetros toman


precedencia sobre los nombres de las tablas de las base de
datos.

• Los nombres de las columnas de las tablas de la base de datos


toman precedencia sobre las variables locales.
MANIPULACION DE DATOS

Haga cambios en la base de datos usando comandos DML:


INSERTANDO DE DATOS

• Agregue nueva información para un empleado en la tabla EMPLOYEE.


ACTUALIZANDO DATOS

• Incremente el salario de todos los empleados quienes sean: stock clerks


BORRANDO DATOS

• Borre los registros que pertenezcan al departamento numero 10 de la tabla employees


PRACTICA 6.4
ESCRIBIENDO ESTRUCTURAS DE CONTROL
CONTROLANDO EL FLUJO DE EJECUCION
INSTRUCCION “IF”

CONDITION Es una variable BOOLEANA o expresión que retorna: TRUE, FALSE o NULL.
THEN Presenta una cláusula que asocia la expresión booleana con la secuencia de
declaraciones que la sigue.
STATEMENTS Puede ser una o más sentencias PL/SQL o SQL. (Que puede incluir
declaraciones IF adicionales que contengan varias declaraciones anidadas
IF, ELSE y ELSIF .) Las declaraciones en el cláusula THEN se ejecutan solo si
la condición en la cláusula IF asociada se evalúa como VERDADERO.
INSTRUCCION “IF”

ELSIF Es una condición que introduce una expresión booleana (si la primera
condición produce FALSO o NULO, la palabra clave ELSIF presenta
condiciones adicionales.)
ELSE Presenta la cláusula predeterminada que es ejecutada si y solo si ninguno de los
los predicados anteriores (IF y ELSIF) son VERDADEROS. Las pruebas se ejecutan en
secuencia.
END IF Marca el FIN de una instrucción IF.

NOTA: ELSIF y ELSE son opcionales.


INSTRUCCION SIMPLE “IF”

Condiciones adicionales:
Una instrucción IF puede tener múltiples expresiones condicionales
relacionadas con operadores lógicos tales como AND, OR y NOT.
Por ejemplo:
IF (myfirstname = 'Christopher' AND v_myage <11)
INSTRUCCION IF-THEN-ELSE
INSTRUCCION IF-ELSIF-ELSE
VALOR “NULL” EN INSTRUCCION IF
EXPRESION CASE

• Una expresión CASE selecciona un resultado y lo devuelve.


• Para seleccionar el resultado, la expresión CASE usa
expresiones. El valor devuelto por estas expresiones es
utilizado para seleccionar una de varias alternativas.
EXPRESION CASE: Ejemplo 1
EXPRESION CASE: Ejemplo 2
EXPRESION CASE: Ejemplo 3
MANEJANDO “NULL”

Cuando trabajas con valores nulos, puedes evitar algunos errores teniendo
en cuenta las siguientes reglas:

• Las comparaciones simples que implican nulos siempre arrojan NULL.

• Al aplicar el operador lógico NOT a un nulo se obtiene NULL.

• Si la condición produce NULL en una declaración de control condicional,


su asociada secuencia de instrucciones no es ejecutado.

Ejemplo 1: Ejemplo 2:
TABLAS LOGICAS

• Construya una condición booleana simple con un operador de comparación.


EXPRESIONES BOOLEANAS O LOGICAS

¿Cual es el valor de “flag” en cada caso?

TRUE
FALSE
NULL
FALSE
CONTROL INTERACTIVO: Declaraciones LOOP

Loops repiten las instrucciones o una secuencias de instrucciones varias veces.

• Hay tres tipos de bucle:

• BASIC loop : Que realiza acciones repetitivas sin condiciones generales.

• FOR loop : Que realizan acciones iterativas basadas en un contador.

• WHILE loop : Que realizan acciones iterativas basadas en una condición


CONTROL INTERACTIVO: Basic Loop
Basic Loop: Ejemplo

Ejemplo de LOOP básico que resuelve el siguiente problema:

"Inserte tres nuevos ID de ubicación para el código de país de CA y la ciudad de Montreal ".
Use WHILE Loop para repetir instrucciones mientras una condición sea
Verdadera.

NOTA: Si la condición es NULA, entonces el WHILE Loop no es


ejecutado y el control es pasado a la próxima instrucción.
WHILE Loops: Ejemplo
• Use un ciclo FOR para controlar el número de iteraciones.
• No se declara el contador; está declarado implícitamente

Counter Es un entero declarado implícitamente cuyo valor automáticamente


aumenta o disminuye (disminuye si se usa la palabra clave REVERSE)
por 1 en cada iteración del ciclo hasta que el límite superior o inferior sea alcanzado.
Reverse Hace que el contador disminuya con cada iteración desde el valor superior al valor
inferior.
Nota: El límite inferior se referencia primero.
lower_bound Especifica el límite inferior para el rango de valores de contador.
upper_bound Especifica el límite superior para el rango de valores de contador.
FOR Loops: Ejemplo
FOR Loops: Reglas

• Referencia el contador solo dentro del ciclo; no está definido fuera del circuito.

• No haga referencia al contador como el objetivo de una asignación.

• Ninguno de los bucles debe ser NULL.

Ejemplo:
Uso sugerido de los Loops.

•Usa el Basic Loop: Cuando las instrucciones dentro del ciclo debe ejecutar al menos una vez.

• Utilice WHILE Loop: Si la condición debe ser evaluada en el comienzo de cada iteración.

• Use un FOR Loop: Si se conoce el número de iteraciones o puede ser determinado.


BUCLES ANIDADOS Y ETIQUETAS: Ejemplo
BUCLES ANIDADOS Y ETIQUETAS

Loops anidados y etiquetas:

• Puede anidar bucles en múltiples niveles.

• Use etiquetas para distinguir entre bloques y bucles.

• Salga del bucle externo con la instrucción EXIT que hace referencia la etiqueta.
INSTRUCCION PL/SQL: CONTINUE

• Definición:
• Agrega la funcionalidad al comienzo de la proxima iteracion del Loop.
• Proporciona a los programadores la capacidad de transferir el control a la próxima
iteración del Loop.
• Usa estructura y semántica paralelas a la instrucción EXIT.

• Beneficios:
• Facilita el proceso de programación.
• Proporcionar una pequeña mejora de rendimiento sobre las viejas soluciones que
simulaban la funciona CONTINUE.
INSTRUCCION PL/SQL CONTINUE: Ejemplo
INSTRUCCION PL/SQL CONTINUE: Ejemplo 1
PRACTICA 6.5
CURSORES
CURSORES en PL/SQL

• Un CURSOR es un puntero a un área privada de memoria asignada por el


motor de bases de datos.
• Esta es usada para manejar el conjunto resultado de una instrucción SELECT.

• Existen dos tipos de cursores: IMPLICITOS y EXPLICITOS

➢ IMPLICITOS: Creados y manejados internamente por el motor de base de


datos para procesar instrucciones SQL.

➢ EXPLICITOS: Declarados explícitamente por el programador.


CURSORES EXPLICITOS

• Se declara un cursor explicito cuando tienes una instrucción SELECT


que retorna múltiples resultados. Esos resultados pueden ser
procesados uno a uno.
• El conjunto de registros retornados por el SELECT se le denomina
Conjunto Activo (Active Set).
OPERACIÓN CURSORES EXPLICITOS

Funciones de los cursores explicitos:

• Realiza el procesamiento fila por fila.


• Mantiene un registro de la fila que se está procesando actualmente.
• Permite al programador controlar manualmente los cursores explícitos en el bloque PL / SQL
CONTROLANDO CURSORES EXPLICITOS

Funciones de los cursores explicitos:


• Realiza el procesamiento fila por fila.
• Mantiene un registro de la fila que se está procesando actualmente.
• Permite al programador controlar manualmente los cursores explícitos
en el bloque PL / SQL
DECLARANDO CURSORES

Nota
• No incluya la cláusula INTO en la declaración del cursor, aparecera más adelante en declaración FETCH.
• Si desea que las filas se procesen en una secuencia específica, use la cláusula ORDER BY en la consulta.
• El cursor puede ser cualquier instrucción válida SELECT, incluidas Joins, subconsultas, etc.
ABRIENDO CURSORES

OPEN es una declaración ejecutable que realiza las siguientes operaciones:

1. Asigna dinámicamente la memoria para un área de contexto


2. Analiza la instrucción SELECT
3. Vincula las variables de entrada (establece los valores para las variables de entrada obteniendo
las direcciones de memoria)
4. Identifica el conjunto activo (el conjunto de filas que satisfacen los criterios de búsqueda). Las
filas del cojunto activo no se recuperan cuando se ejecuta la instrucción OPEN. Más bien, la
instrucción FETCH recupera las filas del cursor a las variables.
5. Coloca el puntero a la primera fila en el conjunto activo
OBTENIENDO DATOS DE CURSOR
ATRIBUTOS PARA CURSORES IMPLICITOS

• Usando atributos de cursores de SQL, podemos probar las salida de la instrucción SQL.

SQL%FOUND Atributo booleano que se evalúa a VERDADERO si el SQL mas reciente


afectó al menos a una fila.
SQL%NOTFOUND Atributo booleano que se evalúa a VERDADERO si el SQL mas reciente
NO afectó ni una fila.
SQL%ROWCOUNT Un valor integer que representa el numero de filas afectadas por el SQL
mas reciente ejecutado
OBTENIENDO DATOS DE CURSOR

Atributos:
SQL%NOTFOUND
SQL%FOUND
SQL%ROWCOUNT
CERRANDO EL CURSOR

• La instrucción CLOSE desactiva el cursor


• Libera el área de contexto y el conjunto active.
• Cierre el cursor después de completar el procesamiento de la instrucción
FETCH.

Nota: Aunque es posible terminar el bloque PL / SQL sin cerrar cursores, debe convértirse en un hábito cerrar
cualquier cursor que declare explícitamente para liberar recursos. Hay un límite máximo de cursores abiertos
por sesión, que está determinado por el parámetro OPEN_CURSORS
CURSOR FOR LOOPS

• El cursor FOR loop es un atajo para procesar explícitamente cursores


• Se producen OPEN, FECTH, EXIT y CLOSE del cursos implícitos.
• El RECORD está declarado implícitamente.

Recomendaciones:
• No declare el RECORD que controla el ciclo; está declarado implícitamente.
• Pruebe los atributos del cursor durante el ciclo si es necesario.
• Proporcione los parámetros para un cursor, si es necesario, entre paréntesis siguiendo el
nombre del cursor en la declaración FOR.
CURSO FOR LOOPS

• Observe que no se declaran variables para realizer el FETCH e ingresarla en la


variable (INTO)
• No existen las instrucciones OPEN y CLOSE para abrir y cierra el cursor,
respectivamente.
Cursor FOR Loops usando Subqueries

• No hay necesidad de declarar el cursor.


CURSORES EXPLICITOS: Atributos

• Utilice los atributos del cursor para obtener información del estado del
mismo.

Nota: No se puede hacer referencia a los atributos del cursor directamente


en un SQL.
ATRIBUTO: %ISOPEN

• Puede realizer FECTH de las filas solo cuando el cursor está abierto.
• Use el atributo de cursor %ISOPEN, antes de realizar un FETCH para
saber si el cursor está abierto.

Nota: %ISOPEN devuelve el estado del cursor: TRUE si está abierto y


FALSE si no.
%ROWCOUNT Y %NOTFOUND: Ejemplo

• El ejemplo en la diapositiva recupera los primeros 10 empleados, uno por uno.


• Este ejemplo muestra cómo los atributos %ROWCOUNT y %NOTFOUND se pueden
usar para condiciones de salida en un bucle.
ATRIBUTO: %ROWCOUNT

• Ejemplo: Borre las filas para un empleado dado un employee ID


desde la tabla EMPLOYEES. Imprima el numero de filas borradas.
PRACTICA 6.6
MANEJO DE EXCEPCIONES
QUES ES UNA EXCEPCION
MANEJO DE EXCEPCIÓN
• MANEJO DE EXCEPCIÓN: Ejemplo
ENTENDIENDO LAS EXCEPCIONES CON PL/SQL

• Una excepción es un error PL/SQL que se genera durante ejecución del código.

• Se puede presentar una excepción:


o Implícitamente por el Servidor Oracle
o Explícitamente por el programa

• Se puede manejar una excepción:


o Al atraparlo con un manejador.
o Al propagarlo al entorno.
TIPOS DE EXCEPCIÓN
PAUTAS PARA ATRAPAR EXCEPCIONES

• La palabra clave EXCEPTION inicia la sección de excepciones.

• Se permiten varios manejadores de excepciones.

• Solo se procesa un controlador antes de abandonar el bloque.

• WHEN OTHERS: siempre debe ser la última cláusula.

• Solo se puede tener una cláusula OTHERS.

• Las excepciones no pueden aparecer en sentencias de asignación o


en sentencias de SQL.
SINTAXIS PARA ATRAPAR LAS EXCEPCIONES

• El controlador OTHERS atrapa todas las excepciones que aún no están


definidas.
EXCEPCIONES PREDEFINIDAS

• Haga referencia al nombre predefinido en la sección de manejo de excepciones

• Ejemplo de excepciones predefinidas:


PRACTICA 6.7

También podría gustarte