Rational Developer for System z, Versión 7.6.1

Conectar a una base de datos DB2 utilizando PL/I

Antes de empezar

Antes de intentar conectarse a una base de datos DB2, primero debe configurar una conexión de base de datos (consulte la sección Configurar una conexión de base de datos) y luego configurar el entorno de trabajo para que utilice dicha conexión de base de datos con el asistente Conexión de base de datos (consulte la sección Configurar la conexión con una base de datos DB2 UDB zSeries para obtener un ejemplo de cómo conectarse a una base de datos OS/390 DB2).

Procedimiento

  1. Cree un proyecto PL/I para el código fuente.
  2. Enlace la biblioteca DB2 al proyecto abriendo la página de propiedades Opciones de enlace local.
  3. Escriba /de db2api.lib en el campo Opciones de enlace.
  4. Pulse Opciones de construcción PL/I local en la lista de la izquierda, y facilite la siguiente información:
    Opciones de compilación
    TEST,MACRO,OPTIONS
    SYSLIB
    directorio_instalación\EXTRAS\INCLUDE\PLI
    Nota: Sustituya directorio_instalación por el directorio de instalación de DB2.
  5. Seleccione El fuente contiene SQL intercalado.
  6. Pulse Examinar y seleccione la conexión de DB2. Si todavía no ha configurado una conexión con la base de datos, pulse Nueva conexión.
  7. Opcional: En el campo Otras opciones SQL, entre opciones adicionales para pasarlas al preprocesador SQL. Las distintas opciones SQL se separan con comas.
  8. Pulse Aceptar.
    Nota: No especifique opciones relacionadas con DB2 en el campo Opciones de compilación. Las opciones y subopciones de compilador necesarias se crearán automáticamente a partir de la conexión DB2 seleccionada y las opciones que indique en el campo Otras opciones SQL.
  9. Inserte la siguiente sentencia antes de usar sentencias SQL en el código:
    EXEC SQL INCLUDE SQLCA;
    EXEC SQL INCLUDE SQLDA;
    Asegúrese asimismo de que todas las sentencias SQL tienen el siguiente formato en su código:
    EXEC SQL sentencia;
    donde sentencia es su sentencia SQL.

Ejemplo

Código PL/I de ejemplo para acceder a una base de datos DB2
*PROCESS MARGINS(1,100) LANGLVL(SAA2) MACRO;
*PROCESS SOURCE XREF;
*PROCESS NOT('ª^') DFT(BYVALUE)  ;
*PROCESS INCLUDE (EXT('CPY','INC','PLP','MRP'));

/*********************************************************************/
/*  Autor                 : Su nombre                           */
/*  Fecha de escritura    : 7/07/04                                 */
/*  Funciones primarias   : Hacer select en la db2 DB de ejemplo    */
/*                                                                   */
/*  Qué hay que cambiar:                                            */
/*  Debe cambiar USERNAME y PASSWORD para la base de datos de       */
/*  ejemplo Sample DB2 en la sentencia *PROCESS PP(SQL... y en la   */
/*  consulta Connect hacia el centro de este código de ejemplo.           */
/*                                                                   */
/*********************************************************************/
 DB2Samp: PROCEDURE OPTIONS(MAIN);

    DISPLAY('EXAMPLE STARTED.');

 /*******************************************************************/
 /* Declarar estructuras SQL */
 /*******************************************************************/
 EXEC SQL INCLUDE SQLCA;
 EXEC SQL INCLUDE SQLDA;
 EXEC SQL WHENEVER SQLERROR CONTINUE;

 DCL VALCODE                 BINARY(31) FIXED INIT(0);
 DCL GOODCODE                BINARY(31) FIXED INIT(0);
 DCL FIRSTNME                 CHAR(30) var init('NOVAL');

 /*******************************************************************/
 /* Imprescindible conectar con base de datos para encontrar tabla  */
 /*******************************************************************/
 EXEC SQL CONNECT TO sample USER 'USERNAME' using 'PASSWORD';
 CALL PRSQLC ('CONNECT TO SAMPLE');


 /********************************************************************/
 /*Hace una operación SELECT para obtener el nombre del empleado     */
 /*cuyo número es el '000010' y lo almacena en la variable           */
 /*FIRSTNME y luego lo visualiza.                                    */
 /********************************************************************/
  EXEC SQL SELECT firstnme
           INTO :FIRSTNME
           FROM employee
           WHERE empno = '000010';

           DISPLAY('FIRSTNME');
           DISPLAY('========');
           DISPLAY(FIRSTNME);
           DISPLAY('');

           CALL PRSQLC ('SELECT');


 /****************************************************/
 /****************************************************/
 /* El proc. PRSQLC verifica que SQL ha funcionado.  */
 /* Si no funciona, visualizará el código SQL        */
 /* y el mensaje de error SQL.                */
 /*                                                  */
 /* Escrito por: persona                             */
 /****************************************************/
 /****************************************************/
    PRSQLC:   PROCEDURE(FUNCTION);
    DECLARE FUNCTION CHARACTER (80) VARYING;

    IF (SQLCODE = GOODCODE) THEN
       PUT SKIP(2) EDIT (FUNCTION, ' WAS SUCCESSFUL')
                     (A(LENGTH(FUNCTION)), A(15));
    ELSE DO;
       IF (SQLCODE ^= 1) THEN DO;
          PUT SKIP(2) EDIT (FUNCTION, ' GOT SQLCODE ', sqlcode)
                     (A(LENGTH(FUNCTION)), A(13), F(8));
          PUT SKIP(2) EDIT (FUNCTION, ' GOT SQLERRM ', SQLERRM)
                     (A(LENGTH(FUNCTION)), A(13), A(70));
          VALCODE = VALCODE + 1;
          PUT SKIP(2) EDIT ('| VALCODE = ', VALCODE) (A(12), F(8));
       END;
       ELSE PUT SKIP(2) EDIT (FUNCTION, ' REACHED BOTTOM OF TABLE')
                       (A(LENGTH(FUNCTION)), A(24));
    END;
 END PRSQLC;
 /**************************************************/
 /**************************************************/

 EXEC SQL COMMIT;


 /*******************************************************************/
 END DB2Samp;

Términos de uso | Comentarios

Este Information Center está basado en tecnología Eclipse. (http://www.eclipse.org)