⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 czdmb.sqc

📁 本人写的在AIX下的用SQLC开发的处理DB2数据库中业务的程序
💻 SQC
字号:
/*-------------------------------------------------------
** 程序名:czdmb.sqc
** 程序员:
** 修改时间:20040720
** 程序功能:操作代码(czdmb)<表(b_business)
-------------------------------------------------------*/

#include "trsfunc.h"

EXEC SQL INCLUDE SQLCA;

int main(int argc,char *argv[])
{
   time_t t_bgn,t_end;
   int t_use,t_hour,t_min,t_sec;
   int icntfetch,icntinsert,icntupdate,icnterror,iret,iper;
   FILE *fp;
   char logfile[30],showmsg[80];
   char xwdm1[9],xwdm2[9],xwdm3[9],xwdm4[9];

   EXEC SQL BEGIN DECLARE SECTION;
     /* 连接数据库所用的字段 */
     char  m_dbs[11];
     char  m_user[11];
     char  m_password[11];
     char  m_branch_code[4];

     /*KS.B_BUSINESS信息*/
     char    m_business_code[5];
     char    m_business_name[21];
     char    m_change_type[5];
     char    m_business_comment[81];
     char    m_print_flag[2];         

     /*ztv40.czdmb*/
     char        m_czdm[5];
     char        m_cznr[21];

   EXEC SQL END   DECLARE SECTION;
       
   EXEC SQL WHENEVER NOT FOUND  CONTINUE;
   EXEC SQL WHENEVER SQLWARNING CONTINUE;
   EXEC SQL WHENEVER SQLERROR   CONTINUE;
       

   if ( argc != 5 && argc != 4 )
    { printf("ERROR:Parameter is less than 3!\n");
      printf("Usage: %s dbs user password schema\n",argv[0]);
      return 1;
    }

  strcpy(m_dbs,argv[1]);
  strcpy(m_user,argv[2]);
  strcpy(m_password,argv[3]);

  if (argc == 5)
     strcpy(m_branch_code,argv[4]);
  else 
    strcpy(m_branch_code," ");
  
  icntfetch=0;
  icntinsert=0;
  icntupdate=0;
  icnterror=0;
  iret=0;
  iper=0;


  strcpy(logfile,"data/");
  strcat(logfile,argv[0]);
  /*strcat(logfile,".txt");*/	

  
  if ( ( fp=fopen(logfile,"w+")) == NULL )
   { printf("Error:Open log file %s error!\n",logfile);
     return 2;
   }

  strcpy(showmsg,"操作代码(czdmb)<表(b_business)");
  printf("----------------%s:转换开始--------------\n",showmsg);
  t_bgn=time(NULL);
  EXEC SQL CONNECT TO :m_dbs USER :m_user USING :m_password;
  if ( sqlca.sqlcode != 0 )
   { printf("ERROR:Fail to connect to %s!\n",m_dbs);
     return 3;
   }
        
   EXEC SQL DECLARE c1 CURSOR WITH HOLD FOR
   	select BUSINESS_CODE,
              BUSINESS_NAME,
              CHANGE_TYPE,
              BUSINESS_COMMENT,
              PRINT_FLAG
	from KS.B_BUSINESS
       ORDER BY BUSINESS_CODE;       
                       
   EXEC SQL OPEN c1;
   while(1)
   {
   EXEC SQL FETCH c1 INTO   :m_business_code,
                            :m_business_name,
                            :m_change_type,
                            :m_business_comment,
                            :m_print_flag;

   if (SQLCODE) break;
   
      icntfetch++;

	memset(m_czdm   ,0x0,sizeof(m_czdm  ));
	memset(m_cznr ,0x0,sizeof(m_cznr  ));
	
       /*以下进行数据转换赋值*/ 
        strcpy(m_czdm,m_business_code); 
        strcpy(m_cznr,m_business_name); 
	

	fprintf(fp,"%-4s~",m_czdm      );
	fprintf(fp,"%20s",m_cznr      );
	fprintf(fp,"%c%c", 0x0D,0x0A   );
	                    
      icntinsert++;         
                            
      if ( icntfetch % COMMITROWS == 0 )
       { if ( iper == 0 )   
           printf("%s: %d OK\n",showmsg,icntfetch);
         else               
           printf("%s: %d %d%% FAILED!\n",showmsg,icntfetch,iper);
         iper=0;            
       }

   }
   EXEC SQL CLOSE c1;
   fclose(fp);

   EXEC SQL CONNECT RESET;
   printf("*************%s:数据转换结束***************\n",showmsg);
   printf("共从旧表中取出%d条记录,共生成%d条新记录,有%d条错误!\n",
        icntfetch,icntinsert,icnterror);
   t_end=time(NULL);
   t_use=t_end - t_bgn;
   t_sec=t_use % 60;
   t_min=t_use / 60;
   t_min=t_min % 60;
   t_hour=t_use/ 3600;
/*   printf("处理共花时[%02d:%02d:%02d],每秒处理%d条记录\n",
           t_hour,t_min,t_sec,icntfetch/t_use);
*/   exit(0);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -