Desarrollando en Cobol y Natural sobre Plataforma Mainframe

martes, 26 de noviembre de 2013

Sentencia INSERT en una tabla DB2

Cuando queramos almacenar un nuevo registro en un fichero DB2 tendremos que recurrir a la sentencia INSERT. Se trata de un comando SQL que puede ser usado en los programas Cobol como código embebido con las cláusulas EXEC SQL y END-EXEC.

La sentencia INSERT nos permitirá incorporar un nuevo registro en nuestra tabla DB2 mediante la indicación de los campos que queremos que tengan algún contenido. También tendremos que indicar los valores que deberán tener dichos campos.



Un ejemplo de INSERT sería el siguiente.

*                                            
*    INSERTAMOS NUEVO REGISTRO EN DB2 JJCLIEM0
*    -----------------------------------------
     EXEC SQL                                
       INSERT INTO JJCLIEM0                  
             (CLIENTE,                       
              NOMBRE,                        
              APELLIDO1,                     
              APELLIDO2,                     
              ALTURA,                        
              PESO,                          
              IMC,                           
              OBSERVACIONES,                 
              FECHA)                         
         VALUES                              
             (:S-CLIENTE,                    
              :S-NOMBRE,                     
              :S-APELLIDO1,                  
              :S-APELLIDO2,                  
              :S-ALTURA,                      

              :S-PESO,                       
              :S-IMC,                        
              :S-OBSERVACIONES,              
              CURRENT_TIMESTAMP)             
     END-EXEC
                             

Como vemos, la sentencia se compone de 2 cláusulas:

1º) Cláusula INSERT INTO: donde tendremos que indicar el nombre del fichero DB2 y la denominación de todos los campos en los que queremos almacenar información para el nuevo registro.

2º) Cláusula VALUES: donde tendremos que especificar los valores que quedarán contenidos en cada uno de los campos especificados anteriormente. Dichos valores podrán proceder de constantes o de variables.

Tras la ejecución de la sentencia INSERT tendremos que establecer, como siempre, un control de la variable SQLCODE. De este modo verificaremos si la inserción se ha realizado correctamente o si, por contra, se ha detectado algún error.

*                                                        
*    GESTION DEL SQLCODE                                 
*    -------------------                                 
     EVALUATE TRUE                                       
       WHEN SQLCODE = ZEROES                             
         ADD 1                   TO CO-LEIDOS-ENTRADA1   
         DISPLAY 'ACCESO DB2 OK'                         
       WHEN SQLCODE = -803                               
         SET NO-FIN-ENTRADA1     TO TRUE                 
         DISPLAY 'EL REGISTRO YA EXISTE EN LA TABLA'     
       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
                                        

Una vez controlado el SQLCODE, pasaremos a indicar si la ejecución ha sido correcta, si el registro ya existía en el fichero DB2 o si se ha producido algún otro tipo de error. No debemos olvidar establecer este tipo de controles, ya que es muy frecuente que se obtenga el retorno 803 al intentar dar de alta un registro que ya existe en la tabla.

Y eso es todo. Con estas sencillas indicaciones ya no deberíamos tener problemas a la hora de implementar un INSERT en nuestros programas Cobol.

Saludos.

No hay comentarios:

Publicar un comentario

Related Posts Plugin for WordPress, Blogger...