Rational Developer for System z, version 7.6.1

Connexion à une base de données DB2 avec PL/I

Avant de commencer

Avant d'essayer de vous connecter à une base de données DB2, vous devez tout d'abord configurer une connexion à une base de données (voir Configuration d'une connexion à une base de données), puis, à l'aide de l'assistant prévu à cet effet, configurer votre plan de travail pour l'utilisation de cette base de données (voir Configuration de la connexion à une base de données zSeries DB2 UDB pour découvrir comment se connecter à une base de données DB2 OS/390).

Procédure

  1. Créez un projet PL/I local pour votre code source.
  2. Liez la bibliothèque DB2 à votre projet en ouvrant la page des propriétés Options de liens locaux.
  3. Saisissez /de db2api.lib dans la zone Options de liens.
  4. Cliquez sur Options de génération PL/I locale dans la liste de gauche et entrez les informations suivantes :
    Options de compilation
    TEST,MACRO,OPTIONS
    SYSLIB
    répertoire_installation\EXTRAS\INCLUDE\PLI
    Remarque : Remplacez répertoire_installation par le répertoire d'installation de DB2.
  5. Sélectionnez La source contient des instructions SQL imbriquées.
  6. Cliquez sur Parcourir et sélectionnez votre connexion DB2. Si vous n'avez pas encore configuré de connexion à votre base de données, cliquez sur Nouvelle connexion.
  7. Facultatif : Dans la zone Autres options SQL, entrez des options supplémentaires à transmettre au préprocesseur SQL. Séparez les différentes options SQL par des virgules.
  8. Cliquez sur OK.
    Remarque : Ne spécifiez pas d'options DB2 dans la zone Options de compilation. Les options de compilation et les sous-options nécessaires seront générées automatiquement à partir de la connexion DB2 sélectionnée et des options entrées dans la zone Autres options SQL.
  9. Insérez les instructions suivantes dans votre code avant l'utilisation des instructions SQL :
    EXEC SQL INCLUDE SQLCA;
    EXEC SQL INCLUDE SQLDA;
    Veillez également à ce que toutes les instructions SQL de votre code soient formatées ainsi :
    EXEC SQL instruction;
    instruction correspond à votre instruction SQL.

Exemple

Exemple de code PL/I pour l'accès à une base de données DB2
*PROCESS MARGINS(1,100) LANGLVL(SAA2) MACRO;
*PROCESS SOURCE XREF;
*PROCESS NOT('ª^') DFT(BYVALUE)  ;
*PROCESS INCLUDE (EXT('CPY','INC','PLP','MRP'));

/*********************************************************************/
/*  Author                : Your name                           */
/*  Date-written          : 7/07/04                                 */
/*  Primary Function(s)   : Perfom a select on the Sample db2 DB    */
/*                                                                   */
/*  What you need to change:                                        */
/*  Make sure you change the USERNAME and PASSWORD for your Sample  */
/*  DB2 database BOTH in the *PROCESS PP(SQL... statment and in the */
/*  Connect query towards the middle of this example code.           */
/*                                                                   */
/*********************************************************************/
 DB2Samp: PROCEDURE OPTIONS(MAIN);

    DISPLAY('EXAMPLE STARTED.');

 /*******************************************************************/
 /* declare SQL structures */
 /*******************************************************************/
 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');

 /*******************************************************************/
 /* CONNECT TO DATABASE IS MANDATORY OR TABLE WON'T BE FOUND        */
 /*******************************************************************/
 EXEC SQL CONNECT TO sample USER 'USERNAME' using 'PASSWORD';
 CALL PRSQLC ('CONNECT TO SAMPLE');


 /********************************************************************/
 /*Performs a SELECT to get the first name of the employee           */
 /*with and employee number of '000010' and store it in the variable */
 /*FIRSTNME and then displays it.                                    */
 /********************************************************************/
  EXEC SQL SELECT firstnme
           INTO :FIRSTNME
           FROM employee
           WHERE empno = '000010';

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

           CALL PRSQLC ('SELECT');


 /****************************************************/
 /****************************************************/
 /* The PRSQLC procedure verifys that the SQL worked.*/
 /* If it does not work, it will display the SQLCode */
 /* as well as the SQL error message.                */
 /*                                                  */
 /* Written by: person                               */
 /****************************************************/
 /****************************************************/
    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;

Conditions d'utilisation | Commentaires

Ce centre de documentation utilise la technologie Eclipse. (http://www.eclipse.org)