testA1.ec
上传用户:dgyhgb
上传日期:2007-01-07
资源大小:676k
文件大小:2k
源码类别:

SQL Server

开发平台:

Unix_Linux

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. char  info[20];
  4. int   k;
  5. $ whenever sqlerror goto errexit;
  6. int
  7. show_data(int lo,int hi)
  8. {
  9.   $ declare show0 cursor for
  10.    ( select k,info 
  11.        from ins
  12.        where :lo <= k and k <= :hi  
  13.    )
  14.   ;
  15.   $ open show0;
  16.   fputs("|-------+--------------------|n",stdout);
  17.   while(1)
  18.     {
  19.       $ fetch show0 into :k,:info;
  20.       if(SQLCODE==100)break;
  21.       printf("|%7d|%20s|n",k,info);
  22.     }
  23.   fputs("|-------+--------------------|n",stdout);
  24.   $ close show0;
  25.   return 0;
  26.  errexit:
  27.   return SQLCODE;
  28. }
  29. int
  30. check_data(int expect)
  31. {
  32.   int i=0, e = expect;
  33.   $ declare show1 cursor for
  34.    ( select k,info
  35.        from ins )
  36.     order by 1
  37.   ;
  38.   $ open show1;
  39.   while(1)
  40.     {
  41.       $ fetch show1 into :k,:info;
  42.       if(SQLCODE==100)break;
  43.       if(k!=i)
  44.         {
  45.           printf("mismath: %d -> %d(%s)n",i,k,info);
  46.           i = k;
  47.         }
  48.       fprintf(stderr,"bbbbb%4d.",i);
  49.       i++;
  50.       e--;
  51.     }
  52.   $ close show1;
  53.   if(e!=-1)
  54.     printf("unexpected number of rows: %d(%d)n",i,expect+1);
  55.   return 0;
  56.  errexit:
  57.   return SQLCODE;
  58. }
  59. int
  60. main(int argc,char **argv)
  61. {
  62.   int pass = 0;
  63.   int i = 0;
  64.   fprintf(stderr,"deleting from ins...n");
  65.   $ delete from ins ;
  66.   $ commit work;
  67.   fprintf(stderr,"deleting commited;n");
  68.   for(i=0;i<=501;i++)
  69.     {
  70.       k = i;
  71.       sprintf(info," %04d",i);
  72.       fprintf(stderr,"r%s.",info);
  73.       $ insert into ins (k,info)
  74. values (:k,:info );
  75.       if(i%5000==0)
  76.         show_data(-1,i + 1);
  77.       else if (i%400==1)
  78.         {
  79.           fprintf(stderr,"nChecking ...     ");
  80.           check_data(i);
  81.           fprintf(stderr,"  Checkedn");
  82.         }
  83.     }
  84.   check_data(i-1);
  85.   
  86.   printf("ncommitn");
  87.   $ commit work;
  88.   
  89.   printf("nSuccessnn");
  90.   
  91.   return 0;
  92. errexit:
  93.   printf("nError occurednn");
  94.   $ whenever sqlerror goto out;
  95.   
  96.   $ rollback work;
  97. out:
  98.   printf("nExitn");
  99.   return 1;
  100. }