home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: Product / Product.zip / DBDEMO.ZIP / DEMOFLS.ZIP / RBLOCKNO.SQC < prev    next >
Text File  |  1991-06-03  |  4KB  |  117 lines

  1. /************************************************************************/
  2. /* DATABASE PERFORMANCE CONCEPTS AND TECHNIQUES DEMONSTRATION PROGRAM   */
  3. /* MODULE: NO RECORD BLOCKING                                           */
  4. /* source file: RBLOCKNO.SQC                                            */
  5. /************************************************************************/
  6.  
  7. /************************************************************************/
  8. /* HEADER FILES - USER DEFINED                                          */
  9. /************************************************************************/
  10. #include "db.h"
  11.  
  12. /************************************************************************/
  13. /*     FUNCTION PROTOTYPES                                              */
  14. /************************************************************************/
  15. int blocking_no(void);
  16.  
  17. struct timeb dbeg, dend;
  18.  
  19. double qtime_noblock;
  20. /***************************************************************************/
  21. /*      1.  rblock                                                      */
  22. /*      2.  block                                                        */
  23. /***************************************************************************/
  24.  
  25. /*************************************************/
  26. /*  SQL HOST VARIABLE DECLARATIONS               */
  27. /*************************************************/
  28.   EXEC SQL BEGIN DECLARE SECTION;
  29.      double balance;
  30.      short num_rows;
  31.   EXEC SQL END DECLARE SECTION;
  32.  
  33. /************************************************************************/
  34. /* FUNCTION  rblockno()                                                 */
  35. /************************************************************************/
  36. short far rblockno()
  37. {
  38.     qtime_noblock = 0.0;
  39.        if (blocking_no())
  40.           return(-1);
  41.     return(0);
  42. }/* end main */
  43.  
  44. /***************************************************************************/
  45. /*  FUNCTION:  blocking_no()                                               */
  46. /***************************************************************************/
  47.  
  48. int blocking_no()
  49. {
  50.   char error_from[20];
  51.   short cur_row;
  52.  
  53.   EXEC SQL WHENEVER SQLERROR GO TO error;
  54.   EXEC SQL WHENEVER NOT FOUND GO TO ext;
  55.      strcpy(error_from,"select count * ");
  56.      ftime (&dbeg);
  57.      EXEC SQL SELECT COUNT(*)
  58.          INTO :num_rows
  59.          FROM BMCHUGH.CHECKING;
  60.      ftime(&dend);
  61.      qtime_noblock += delta(dbeg.time, dend.time, dbeg.millitm, dend.millitm);
  62.  
  63. /*     printf("\ntotal number of rows = %d", num_rows);
  64. */
  65.  
  66. /****** DECLARE CURSOR *********/
  67.      strcpy(error_from," declare cursor");
  68.      ftime (&dbeg);
  69.      EXEC SQL DECLARE CBLOCKNO CURSOR FOR
  70.         SELECT C_ENDBAL FROM BMCHUGH.CHECKING
  71.         ORDER BY C_ENDBAL;
  72.      ftime(&dend);
  73.      qtime_noblock += delta(dbeg.time, dend.time, dbeg.millitm, dend.millitm);
  74.  
  75. /****** OPEN CURSOR *********/
  76.     strcpy(error_from," open cursor");
  77.      ftime (&dbeg);
  78.     EXEC SQL OPEN CBLOCKNO;
  79.      ftime(&dend);
  80.      qtime_noblock += delta(dbeg.time, dend.time, dbeg.millitm, dend.millitm);
  81.     cur_row = 1;
  82.  
  83. /****** FETCH num_rows/2 ROWS  *********/
  84.     while ((sqlca.sqlcode == 0) && (cur_row <= num_rows/2) ) {
  85.  
  86.        cur_row++;
  87.  
  88.        ftime (&dbeg);
  89.        EXEC SQL FETCH CBLOCKNO
  90.           INTO :balance;
  91.        ftime(&dend);
  92.  
  93.        qtime_noblock += delta(dbeg.time, dend.time, dbeg.millitm, dend.millitm);
  94.  
  95. /*       printf("%7.3f\n", balance);
  96. */
  97.     }/*end while more rows */
  98.  
  99. /****** CLOSE CURSOR *********/
  100.      ftime (&dbeg);
  101.     EXEC SQL CLOSE CBLOCKNO;
  102.      ftime(&dend);
  103.      qtime_noblock += delta(dbeg.time, dend.time, dbeg.millitm, dend.millitm);
  104.  
  105. /*    printf("\nmedian balance = %7.3f",balance);
  106.     printf("\ntotal time = %7.3f", qtime_noblock);
  107. */
  108.  ext:
  109.     return(0);
  110.  
  111.  error:
  112. /*   get_error( &sqlca, error_from);
  113. */   return(-1);
  114.  
  115. }/* end blocking */
  116. /***************************************************************************/
  117.