Procédure
- Créez un projet PL/I local pour votre code source.
- Liez la bibliothèque DB2 à votre projet en ouvrant la page des propriétés Options de liens locaux.
- Saisissez /de db2api.lib dans la zone Options de liens.
- 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.
- Sélectionnez La source contient des instructions SQL imbriquées.
- 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.
- 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.
- 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.
- 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;
où 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;