146 lines
5.4 KiB
HTML
146 lines
5.4 KiB
HTML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!DOCTYPE html
|
|
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
<html lang="en-us" xml:lang="en-us">
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
<meta name="security" content="public" />
|
|
<meta name="Robots" content="index,follow" />
|
|
<meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
|
|
<meta name="DC.Type" content="reference" />
|
|
<meta name="DC.Title" content="Example: LOBLOC.SQC in C" />
|
|
<meta name="DC.subject" content="examples, LOBLOC.SQC C program listing, LOBs (Large Objects)" />
|
|
<meta name="keywords" content="examples, LOBLOC.SQC C program listing, LOBs (Large Objects)" />
|
|
<meta name="DC.Relation" scheme="URI" content="rbafyexampclob.htm" />
|
|
<meta name="copyright" content="(C) Copyright IBM Corporation 1998, 2006" />
|
|
<meta name="DC.Rights.Owner" content="(C) Copyright IBM Corporation 1998, 2006" />
|
|
<meta name="DC.Format" content="XHTML" />
|
|
<meta name="DC.Identifier" content="rbafyllocc" />
|
|
<meta name="DC.Language" content="en-us" />
|
|
<!-- All rights reserved. Licensed Materials Property of IBM -->
|
|
<!-- US Government Users Restricted Rights -->
|
|
<!-- Use, duplication or disclosure restricted by -->
|
|
<!-- GSA ADP Schedule Contract with IBM Corp. -->
|
|
<link rel="stylesheet" type="text/css" href="./ibmdita.css" />
|
|
<link rel="stylesheet" type="text/css" href="./ic.css" />
|
|
<title>Example: LOBLOC.SQC in C</title>
|
|
</head>
|
|
<body id="rbafyllocc"><a name="rbafyllocc"><!-- --></a>
|
|
<!-- Java sync-link --><script language="Javascript" src="../rzahg/synch.js" type="text/javascript"></script>
|
|
<h1 class="topictitle1">Example: LOBLOC.SQC in C</h1>
|
|
<div><div class="section"><div class="note"><span class="notetitle">Note:</span> By using the code examples, you agree to the terms of the <a href="codedisclaimer.htm">Code license and disclaimer information</a>.</div>
|
|
</div>
|
|
<div class="example"> <pre> #include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
#include "util.h"
|
|
|
|
EXEC SQL INCLUDE SQLCA;
|
|
|
|
#define CHECKERR(CE_STR) if (check_error (CE_STR, &sqlca) != 0) return 1;
|
|
|
|
int main(int argc, char *argv[]) {
|
|
|
|
#ifdef DB2MAC
|
|
char * bufptr;
|
|
#endif
|
|
|
|
EXEC SQL BEGIN DECLARE SECTION; <span>1</span>
|
|
char number[7];
|
|
long deptInfoBeginLoc;
|
|
long deptInfoEndLoc;
|
|
SQL TYPE IS CLOB_LOCATOR resume;
|
|
SQL TYPE IS CLOB_LOCATOR deptBuffer;
|
|
short lobind;
|
|
char buffer[1000]="";
|
|
char userid[9];
|
|
char passwd[19];
|
|
EXEC SQL END DECLARE SECTION;
|
|
|
|
printf( "Sample C program: LOBLOC\n" );
|
|
|
|
if (argc == 1) {
|
|
EXEC SQL CONNECT TO sample;
|
|
CHECKERR ("CONNECT TO SAMPLE");
|
|
}
|
|
else if (argc == 3) {
|
|
strcpy (userid, argv[1]);
|
|
strcpy (passwd, argv[2]);
|
|
EXEC SQL CONNECT TO sample USER :userid USING :passwd;
|
|
CHECKERR ("CONNECT TO SAMPLE");
|
|
}
|
|
else {
|
|
printf ("\nUSAGE: lobloc [userid passwd]\n\n");
|
|
return 1;
|
|
} /* endif */
|
|
|
|
/* Employee A10030 is not included in the following select, because
|
|
the lobeval program manipulates the record for A10030 so that it is
|
|
not compatible with lobloc */
|
|
|
|
EXEC SQL DECLARE c1 CURSOR FOR
|
|
SELECT empno, resume FROM emp_resume WHERE resume_format='ascii'
|
|
AND empno <> 'A00130';
|
|
|
|
EXEC SQL OPEN c1;
|
|
CHECKERR ("OPEN CURSOR");
|
|
|
|
do {
|
|
EXEC SQL FETCH c1 INTO :number, :resume :lobind; <span>2</span>
|
|
if (SQLCODE != 0) break;
|
|
if (lobind < 0) {
|
|
printf ("NULL LOB indicated\n");
|
|
} else {
|
|
/* EVALUATE the LOB LOCATOR */
|
|
/* Locate the beginning of "Department Information" section */
|
|
EXEC SQL VALUES (POSSTR(:resume, 'Department Information'))
|
|
INTO :deptInfoBeginLoc;
|
|
CHECKERR ("VALUES1");
|
|
|
|
/* Locate the beginning of "Education" section (end of "Dept.Info" */
|
|
EXEC SQL VALUES (POSSTR(:resume, 'Education'))
|
|
INTO :deptInfoEndLoc;
|
|
CHECKERR ("VALUES2");
|
|
|
|
/* Obtain ONLY the "Department Information" section by using SUBSTR */
|
|
EXEC SQL VALUES(SUBSTR(:resume, :deptInfoBeginLoc,
|
|
:deptInfoEndLoc - :deptInfoBeginLoc)) INTO :deptBuffer;
|
|
CHECKERR ("VALUES3");
|
|
|
|
/* Append the "Department Information" section to the :buffer var. */
|
|
EXEC SQL VALUES(:buffer || :deptBuffer) INTO :buffer;
|
|
CHECKERR ("VALUES4");
|
|
} /* endif */
|
|
} while ( 1 );
|
|
|
|
#ifdef DB2MAC
|
|
/* Need to convert the newline character for the Mac */
|
|
bufptr = &(buffer[0]);
|
|
while ( *bufptr != '\0' ) {
|
|
if ( *bufptr == 0x0A ) *bufptr = 0x0D;
|
|
bufptr++;
|
|
}
|
|
#endif
|
|
|
|
printf ("%s\n",buffer);
|
|
|
|
EXEC SQL FREE LOCATOR :resume, :deptBuffer; <span>3</span>
|
|
CHECKERR ("FREE LOCATOR");
|
|
|
|
EXEC SQL CLOSE c1;
|
|
CHECKERR ("CLOSE CURSOR");
|
|
|
|
EXEC SQL CONNECT RESET;
|
|
CHECKERR ("CONNECT RESET");
|
|
return 0;
|
|
}
|
|
/* end of program : LOBLOC.SQC */</pre>
|
|
</div>
|
|
</div>
|
|
<div>
|
|
<div class="familylinks">
|
|
<div class="parentlink"><strong>Parent topic:</strong> <a href="rbafyexampclob.htm" title="In this example, the application program retrieves a locator for a LOB value; then it uses the locator to extract the data from the LOB value.">Example: Use a locator to work with a CLOB value</a></div>
|
|
</div>
|
|
</div>
|
|
</body>
|
|
</html> |