Desarrollando en Cobol y Natural sobre Plataforma Mainframe

jueves, 28 de noviembre de 2013

Sentencia UPDATE en una tabla DB2

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

Related Posts Plugin for WordPress, Blogger...