jueves, 4 de agosto de 2022

7. CURSORES EN PL/SQL

 

 CURSORES EN PL/SQL

Un cursor es un conjunto de registros devuelto por una instrucci6n SQL. 
Son fragmentos de memoria que reservados para procesar los resultados de una consulta SELECT.  

Ejemplo


CURSOR C1 IS
SELECT ENAME,JOB,HIREDATE

PUSQL distingue entre cursos implícitos que devuelven cero o una sola fila y los explícitos que pueden devolver varias.

Declarar el cursor 

DECLARE CURSOR cursor name [(parameterl , parameter] ... )] 
{RETURN return_typel 1S select_statement ; 
Donde el tipo devuelto representa una fi la de una tabla
 cursor-parameter_name [IN} datatype [{ :- I DEFAULT) e xpression] 

Ejemplo

DECLARE
V_ENAME EMP.ENAME%TYPE;
V_JOB  EMP.JOB%TYPE;
V_HIREDATE EMP.HIREDATE%TYPE;

CURSOR C1 IS
SELECT ENAME,JOB,HIREDATE

Abrir el cursor 

Usamos la instrucción OPEN. 


Ejemplo
BEGIN
OPEN C1;

Leer los datos del cursor

Con la instrucción FETCH.

Ejemplo
FETCH C1 INTO V_DEPTNO,V_DNAME,V_LOC; 

Lo procesamos con un loop.  

Ejemplo

WHILE C1%FOUND LOOP
DBMS_OUTPUT.PUT_LINE(V_DEPTNO||' '||V_DNAME||' '||V_LOC);
FETCH C1 INTO V_DEPTNO,V_DNAME,V_LOC;
END LOOP;
END;
/

Cerrar el cursor

 Para liberar los recursos y cerrar el cursor usamos la instrucción CLOSE.  

Ejemplo 


END;

/
Declaración y utilización de cursores de actualización 

Ejemplo

CURSOR nombre cursor 1S instrucción 

SELECT FOR UPDATE 

Para actualizar los datos del cursor hay que ejecutar una sentencia UPDATE especificando la cláusula WHERE CURRENT OF 

UPDATE emp SET

EMP.DEPTNO=DEPT.DEPTNO  and ENAME LIKE '%A%'

WHERE CURRENT OF c1 


MANEJO DE ERRORES EN PUSQL

En PllSQL una advertencia o error es considera una excepción. Las excepciones se controlan dentro de su propio bloque.

DECLARE

 - - Declaraciones BEGIN 

-- Ejecucion EXCEPTION 

-- Excepción END;  

 Cuando ocurre un error, se ejecuta la porción del programa marcada por el bloque EXCEPTION.

Ejemplo

Provocar y atrapar un error del tipo INVALID CURSOR, y sacar en la pantalla el siguiente mensaje (con DBMS OUTPUT) "CURSOR NO VÁLIDO”.

 



Si existe un bloque de excepción apropiado para el tipo de excepción se ejecuta dicho bloque. Si no existe un bloque de control de excepciones adecuado al tipo.

  • PUSQL proporciona un gran número de excepciones predefinidas que permiten controlar las condiciones de error más habituales.
  • Las excepciones predefinidas no necesitan ser declaradas.
  • PUSQL permite al usuario definir sus propias excepciones, utilizando la sentencia RAISE.
  • La sentencia RAlSE permite lanzar una excepción en forma explícita. 

A continuación prese sentaremos varios ejemplos  de lo ya mencionado 
Ejmeplo

Desplegar nombre del empleado y el nombre del departamento para todos aquellos empleados que tengan una A en su nombre y que además trabajen en el departamento RESEARCH. Usar REGISTROS PL/SQL ( a lo más 1 registro) con atributo %ROWTYPE


Crear un cursor con nombre CI para obtener nombre, ocupación y de contratación de todos los empleados que fueron contratados entre 20 de febrero de 1981 y I de mayo de 1981. Sacar los datos del cursor usando un ciclo básico. Para la condición de salida del ciclo utilizar los atributos del cursor explícito. Con un IF 'verificar si el cursor está abierto, si es así cerrarlo. Imprimir los datos en pantalla con el paquete DBMS OUTPUT


En ocasiones queremos enviar un mensaje de error personalizado al producirse una excepción PUSQL. Para ello es necesario utilizar la instrucción RAlSE...APPLlCATlON_ERROR. 

Ejemplo

Provocar y atrapar un error del tipo ZERO DIVIDE, y sacar en la pantalla el siguiente .mensaje (con DBMS OUTPUT) "NO SE PUEDE DIVIDIR ENTRE CERO".


No hay comentarios:

Publicar un comentario

10. ARQUITECTURA DE SQL SERVER

   10. ARQUITECTURA DE SQL SERVER Los componentes de SQL se dividen en dos amplios grupos: el motor relacional y las utilidades externas. SQ...