Cursores y Exe

Páginas: 30 (7260 palabras) Publicado: 19 de julio de 2011
Cursores en PL/SQL
Introducción a cursores PL/SQL
   PL/SQL utiliza cursores para gestionar las instrucciones SELECT. Un cursor es un conjunto de registros devuelto por una instrucción SQL. Técnicamente los cursores son fragmentos de memoria que reservados para procesar los resultados de una consulta SELECT.  
   Podemos distinguir dos tipos de cursores:
* Cursores implicitos. Este tipode cursores se utiliza para operaciones SELECT INTO. Se usan cuando la consulta devuelve un único registro.
* Cursores explicitos. Son los cursores que son declarados y controlados por el programador. Se utilizan cuando la consulta devuelve un conjunto de registros. Ocasionalmente también se utilizan en consultas que devuelven un único registro por razones de eficiencia. Son más rápidos.
  Un cursor se define como cualquier otra variable de PL/SQL y debe nombrarse de acuerdo a los mismos convenios que cualquier otra variable. Los cursores implicitos no necesitan declaración.
   El siguiente ejemplo declara un cursor explicito:

declare
cursor c_paises is
SELECT CO_PAIS, DESCRIPCION
FROM PAISES;
begin
/* Sentencias del bloque ...*/
end; |
   Paraprocesar instrucciones SELECT que devuelvan más de una fila, son necesarios cursores explicitos combinados con un estructura de bloque.
   Un cursor admite el uso de parámetros. Los parámetros deben declararse junto con el cursor.
   El siguiente ejemplo muestra la declaracion de un cursor con un parámetro, identificado por p_continente.

declare
cursor c_paises (p_continenteIN VARCHAR2) is
SELECT CO_PAIS, DESCRIPCION
FROM PAISES WHERE CONTINENTE = p_continente;
begin
/* Sentencias del bloque ...*/
end; |
   El siguiente diagrama representa como se procesa una instrucción SQL a través de un cursor.

 

Fases para procesar una instrucción SQL
Cursores Implicitos
Declaración de cursores implicitos.
   Los cursores implicitos seutilizan para realizar consultas SELECT que devuelven un único registro.
   Deben tenerse en cuenta los siguientes puntos cuando se utilizan cursores implicitos:
* Con cada cursor implicito debe existir la palabra clave INTO.
* Las variables que reciben los datos devueltos por el cursor tienen que contener el mismo tipo de dato que las columnas de la tabla.
* Los cursores implicitos solopueden devolver una única fila. En caso de que se devuelva más de una fila (o ninguna fila) se producirá una excepcion. No se preocupe si aún no sabe que es una excepcion, le valdrá conocer que es el medio por el que PL/SQL gestiona los errores.
   El siguiente ejemplo muestra un cursor implicito:

declare
vdescripcion VARCHAR2(50);
begin
SELECT DESCRIPCIONINTO vdescripcion
from PAISES
WHERE CO_PAIS = 'ESP';

dbms_output.put_line('La lectura del cursor es: ' || vdescripcion);

end; |
    La salida del programa generaría la siguiente línea:

La lectura del cursor es: ESPAÑA |
Excepciones asociadas a los cursores implicitos.
   Los cursores implicitos sólo pueden devolver una fila, por lo quepueden producirse determinadas excepciones. Las más comunes que se pueden encontrar son no_data_found y too_many_rows. La siguiente tabla explica brevemente estas excepciones.
Excepcion | Explicacion |
NO_DATA_FOUND | Se produce cuando una sentencia SELECT intenta  recuperar datos pero ninguna fila satisface sus condiciones. Es decir, cuando "no hay datos" |
TOO_MANY_ROWS | Dado que cada cursorimplicito sólo es capaz de recuperar una fila , esta excepcion detecta la existencia de más de una fila. |

Cursores Explicitos en PL/SQL
Declaración de cursores explicitos
    Los cursores explicitos se emplean para realizar consultas SELECT que pueden devolver cero filas, o más de una fila.
    Para trabajar con un cursor explicito necesitamos realizar las siguientes tareas:
*...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • EXE
  • cursores
  • Cursores
  • exe.2
  • Manejo de cursores
  • CURSORES EN ORACLE
  • politica exe
  • aplicacion exe

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS