home *** CD-ROM | disk | FTP | other *** search
/ PC World 1999 May / PCWorld_1999-05_cd.bin / software / Vyzkuste / inprise / INTRBASE_55 / EXAMPLES / API / STAT1.E < prev    next >
Text File  |  1998-10-18  |  2KB  |  86 lines

  1. /*
  2.  *    Program type:   Embedded Static SQL
  3.  *
  4.  *    Description:
  5.  *        This program performs a simple update to an existing
  6.  *        table, asks the user whether to save the update, and
  7.  *        commits or undoes the transaction accordingly.
  8.  */
  9.  
  10. #include "example.h"
  11. #include <stdio.h>
  12. #include <stdlib.h>
  13.  
  14. int do_save PROTO((void));
  15. void clean_up PROTO((void));
  16.  
  17. EXEC SQL    
  18.     BEGIN DECLARE SECTION;
  19. EXEC SQL    
  20.     END DECLARE SECTION;
  21.  
  22.  
  23. int main PROTO((void))
  24. {
  25.     clean_up();
  26.  
  27.     /* Insert a new row. */
  28.     EXEC SQL
  29.         INSERT INTO country (country, currency)
  30.         VALUES ('Mexico', 'Peso');
  31.  
  32.     /* Check the SQLCODE directly */
  33.     if (SQLCODE)
  34.     {
  35.         isc_print_sqlerror((short)SQLCODE, gds__status);
  36.         exit(1);
  37.     }
  38.  
  39.     printf("\nAdding:  country = 'Mexico', currency = 'Peso'\n\n");
  40.  
  41.     /* Confirm whether to commit the update. */
  42.     if (do_save())
  43.     {
  44.         EXEC SQL
  45.             COMMIT RELEASE;
  46.         printf("\nSAVED.\n\n");
  47.     }
  48.     else
  49.     {
  50.         EXEC SQL
  51.             ROLLBACK RELEASE;
  52.         printf("\nUNDONE.\n\n");
  53.     }
  54. return 0;
  55. }
  56.  
  57.  
  58. /*
  59.  *    Ask the user whether to save the newly added row.
  60.  */
  61. int do_save PROTO((void))
  62. {
  63.     char    answer[10];
  64.  
  65.     printf("Save?  Enter 'y' for yes, 'n' for no:  ");
  66.     gets(answer);
  67.  
  68.     return (*answer == 'y' ? 1 : 0);
  69. }
  70.  
  71.  
  72. /*
  73.  *    If this is not the first time this program is run,
  74.  *    the example row may already exist -- delete the example
  75.  *    row in order to avoid a duplicate value error.
  76.  */
  77. void clean_up PROTO((void))
  78. {
  79.     EXEC SQL
  80.         DELETE FROM country
  81.         WHERE country =  'Mexico';
  82.  
  83.     EXEC SQL
  84.         COMMIT WORK;
  85. }
  86.