Cuando queramos actualizar la información contenida en un registro de una tabla DB2, la solución será tan fácil como recurrir a la sentencia UPDATE. Este comando nos permitirá actualizar uno o varios de los campos del registro DB2, dejando el resto inalterados.
Para ejecutar el UPDATE sobre el fichero DB2 tendremos que indicar, en primer lugar, el nombre del fichero. A continuación, especificaremos los nombres de los campos que queremos modificar y los valores que deseamos que sustituyan a los que están actualmente contenidos en el registro.
Viéndolo con un ejemplo, la cosa sería así.
*
* MODIFICAMOS REGISTRO EN DB2 JJCLIEM0
* ------------------------------------
EXEC SQL
UPDATE JJCLIEM0
SET ALTURA = :S-ALTURA,
PESO = :S-PESO,
IMC = :S-IMC,
OBSERVACIONES = :S-OBSERVACIONES,
FECHA = CURRENT TIMESTAMP
WHERE CLIENTE = :CLAVE-CLIENTE
END-EXEC
*
Como vemos, la sentencia se divide en varias partes:
1º) Cláusula UPDATE: aquí tenemos que hacer referencia a la tabla DB2 que va a ser actualizada. En el ejemplo, su nombre es JJCLIEM0.
2º) Cláusula SET: aquí debemos especificar todos los campos que van a ser actualizados y, a continuación, los nuevos valores que van a ser almacenados en el registro. Estos valores pueden indicarse como una constante o como una variable (en este último caso, la variable tendrá que estar precedida por el literal ":").
3º) Cláusula WHERE: finalmente, aquí indicaremos el campo clave por el que se va a buscar el registro (o registros, si son varios) que debe ser modificado. En el ejemplo, se actualizarán todos los registros cuyo campo CLIENTE coincida con el valor de la variable CLAVE-CLIENTE.
A continuación, como siempre que accedemos a un fichero DB2, tendremos que proceder a controlar el estado de la variable SQLCODE.
*
* GESTION DEL SQLCODE
* -------------------
EVALUATE TRUE
WHEN SQLCODE = ZEROES
ADD 1 TO CO-LEIDOS-ENTRADA1 DISPLAY 'ACCESO DB2 OK'
WHEN SQLCODE = +100
SET FIN-ENTRADA1 TO TRUE DISPLAY '---> NO EXISTE REGISTRO'
WHEN OTHER
MOVE SQLCODE TO SQLCODE-DIS DISPLAY 'ERROR ACCESO DB2. SQLCODE: ' SQLCODE-DIS
MOVE SQLCODE-DIS TO WS-FILE-ERROR
MOVE 'ERROR ACCESO DB2' TO WS-DESCRIPCION
PERFORM 9980-GENERAR-ERROR
THRU 9980-GENERAR-ERROR-EXIT
END-EVALUATE
*
Este control de SQLCODE nos dirá si el acceso a la tabla DB2 se ha efectuado correctamente, si el registro buscado no existe en la base de datos o si se ha producido algún otro tipo de error. Por supuesto, la ejecución no puede realizar ninguna modificación si no encuentra ningún registro con las características requeridas.
En principio, ejecutando las líneas de código indicadas más arriba no deberíamos tener ningún problema y nuestro programa Cobol tendría que actualizar los registros DB2 sin problema alguno.
Saludos.
No hay comentarios:
Publicar un comentario