Developer's Diary

24 septiembre, 2010

Curso de EasyTrieve V, Cursores II (Ampliación)

Filed under: Cobol / Jcl / Easytrieve, Programación — jnavero @ 4:39 PM

—- Nos mudamos: http://devthisblog.namocode.es
—————————————————————–
Ampliación de Cursores (Cursores II)

En el Capitulo 2 Vimos los cursores y en el Capítulo III las sentencias de control y repetición. Como este capítulo se alargo mucho, decidí dejar este tema para el siguiente y aquí estoy, no tiene mucho que ver con los Arrays vistos anteriormente.

Como decía en el capítulo 2 vimos, como abrir un cursor, como cerrarlo y como consultarlo. Esto que vimos era un tanto introductorio.

Vemos la declaración del cursor.

SQL DECLARE CURAGENDA CURSOR                +

FOR SELECT NOMBRE                     +

FROM AGENDA                     +

WHERE CODIGO = 1000              +

ORDER BY NOMBRE                  +

WITH UR

Abrimos el cursor de la siguiente forma

SQL OPEN CURAGENDA

Hasta aquí todo bien, ¿Pero y si no es posible abrir el cursor, o se produce un error? Para esto usamos SQLCODE, nos permite conocer el estado en el que se encuentran nuestras consultas. El ejemplo completo de abrir un cursor con SQLCODE sería el siguiente:

SQL OPEN CURAGENDA

IF SQLCODE NE 0

DISPLAY ‘Se ha producido un error’

END-IF

Bien, para realizar el select que obtenga los datos, veíamos que se usaba FETCH, vemos el ejemplo  con el SQLCODE.

SQL FETCH CURAGENDA INTO :WS-NOMBRE

Con esto obtenemos la primera fila de la tabla, pero, ¿y si deseamos recuperar todos los nombres?.

SQLCODE, indica el resultado de la consulta en DB2, es decir, contendrá los errores que se produzcan o si el resultado ha sido satisfactorio

SQLCODE = 0 indica que el resultado ha sido satisfactorio

SQLCODE = 100 Indica que el resultado no ha devuelto mas filas. Es decir, podría tratarse del último registro de los datos consultados vemos el ejemplo para recorrer todos los nombres. Supongamos un array de 10 nombres

DEFINE   WS-NOMBRE  W  20 A  OCCURS  10 INDEX(I)

I = 1

DO WHILE SQLCODE NE 0  AND SQLCODE NE +100 AND I LT 10

SQL FETCH CURAGENDA INTO :WS-NOMBRE(I)

I = I + 1

END-DO

Para finalizar y cerrar el cursor  igual es prácticamente igual que lo visto hasta ahora.

SQL CLOSE CURAGENDA

IF SQLCODE NE 0

DISPLAY ‘Se ha producido un error’

END-IF

Para finalizar este mini capitulo, decir, que al igual que consultas, podemos realizar inserciones, modificaciones o borrar cualquier registro siempre y cuando se tengan permisos para ello. En el siguiente curso, veremos el manejo de archivos en EasyTrieve

Anuncios

Dejar un comentario »

Aún no hay comentarios.

RSS feed for comments on this post. TrackBack URI

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: