home *** CD-ROM | disk | FTP | other *** search
/ Chip 2001 January / Chip_2001-01_cd1.bin / tema / interb / InterBase_WI-V6.0-server.exe / server / examples / gpre / stat7.e < prev    next >
Text File  |  2000-06-23  |  3KB  |  118 lines

  1. /*
  2.  *  Program type:   Embedded Static SQL
  3.  *
  4.  *  Description:
  5.  *        This program selects a blob data type.
  6.  *        A set of project descriptions is printed.
  7.  * The contents of this file are subject to the Interbase Public
  8.  * License Version 1.0 (the "License"); you may not use this file
  9.  * except in compliance with the License. You may obtain a copy
  10.  * of the License at http://www.Interbase.com/IPL/
  11.  *
  12.  * Software distributed under the License is distributed on an
  13.  * "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express
  14.  * or implied. See the License for the specific language governing
  15.  * rights and limitations under the License.
  16.  *
  17.  * The Original Code was created by Interbase Software Corporation
  18.  * and its successors. Portions created by Borland/Inprise are
  19.  * Copyright (C) 1992-1998 and 1999-2000 Borland/Inprise. Portions
  20.  * created by InterBase Software Corporation are Copyright (C)
  21.  * 1998-1999 InterBase Software Corporation.
  22.  *
  23.  * Copyright (C) 2000 InterBase Software Corporation
  24.  * All Rights Reserved.
  25.  * Contributor(s): ______________________________________.
  26.  */
  27.  
  28. #include "example.h"
  29. #include <stdlib.h>
  30. #include <stdio.h>
  31.  
  32. EXEC SQL
  33.     BEGIN DECLARE SECTION;
  34.  
  35. BASED ON project.proj_name            proj_name;
  36. BASED ON project.product            prod_type;
  37.  
  38. BASED ON project.proj_desc            blob_id;
  39. BASED ON project.proj_desc.SEGMENT        blob_segment;
  40. unsigned short                    blob_seg_len;
  41.  
  42. EXEC SQL
  43.     END DECLARE SECTION;
  44.  
  45.  
  46. int main (void)
  47. {
  48.     EXEC SQL
  49.         WHENEVER SQLERROR GO TO Error;
  50.  
  51.     /* Declare a table read cursor. */
  52.     EXEC SQL
  53.         DECLARE proj_cur CURSOR FOR
  54.         SELECT proj_name, proj_desc, product
  55.         FROM project
  56.         WHERE product IN ('software', 'hardware', 'other')
  57.         ORDER BY proj_name;
  58.  
  59.     /* Declare a blob read cursor. */
  60.     EXEC SQL
  61.         DECLARE blob_cur CURSOR FOR
  62.         READ BLOB proj_desc
  63.         FROM project;
  64.  
  65.     /* Open the table cursor. */
  66.     EXEC SQL
  67.         OPEN proj_cur;
  68.  
  69.     /*
  70.      *  For each project get and display project description.
  71.      */
  72.  
  73.     while (SQLCODE == 0)
  74.     {
  75.         /* Fetch the blob id along with some other columns. */
  76.         EXEC SQL
  77.             FETCH proj_cur INTO :proj_name, :blob_id, :prod_type;
  78.  
  79.         if (SQLCODE == 100)
  80.             break;
  81.  
  82.         printf("\nPROJECT:  %-30s   TYPE:  %-15s\n\n", proj_name, prod_type);
  83.  
  84.         /* Open the blob cursor. */
  85.         EXEC SQL
  86.             OPEN blob_cur USING :blob_id;
  87.  
  88.         while (SQLCODE == 0)
  89.         {
  90.             /* Fetch a blob segment and a blob segment length. */
  91.             EXEC SQL FETCH blob_cur INTO :blob_segment :blob_seg_len;
  92.  
  93.             if (SQLCODE == 100)
  94.                 break;
  95.  
  96.             printf("  %*.*s\n", blob_seg_len, blob_seg_len, blob_segment);
  97.         }
  98.         printf("\n");
  99.  
  100.         /* Close the blob cursor. */
  101.         EXEC SQL
  102.             CLOSE blob_cur;
  103.     }
  104.  
  105.     EXEC SQL
  106.         CLOSE proj_cur;
  107.  
  108.     EXEC SQL
  109.         COMMIT;
  110.  
  111. return 0;
  112.  
  113. Error:
  114.     isc_print_sqlerror((short) SQLCODE, gds__status);
  115. return 1;
  116. }
  117.  
  118.