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

📄 bak_workorder.pc

📁 数据扫描程序
💻 PC
📖 第 1 页 / 共 4 页
字号:
	fflush(stdout) ;
	OracleErrorProcess("deal_stmt_remain") ;
	return SQLERR ;		
}
int bill_statement_mast(char *cPeriod,char *cCycle,char cType)
{
	int	iRet = 0 ;
	int	RecNum = 0 ;
	
	EXEC SQL BEGIN DECLARE SECTION ;
	varchar		vcPeriod[6+1] ;
	varchar		vcCycle[2+1] ;
	varchar		vcAccountId[10+1] ;
	varchar		vcStatementId[18+1] ;
	varchar		vcSelectSql[512] ;
	varchar		vcInsertSql[512] ;
	varchar		vcDeleteSql[512] ;
	EXEC SQL END DECLARE SECTION ;
	
	EXEC SQL WHENEVER NOT FOUND goto work_bill ;
	EXEC SQL WHENEVER SQLERROR goto work_bill_error ;
	
	vcPeriod.len = sprintf((char *)vcPeriod.arr,"%s",cPeriod) ;
	vcCycle.len = sprintf((char *)vcCycle.arr,"%s",cCycle) ;
	vcPeriod.arr[vcPeriod.len] = 0 ;
	vcCycle.arr[vcCycle.len] = 0 ;
	
	if(cType = 'C')
		vcSelectSql.len = sprintf((char *)vcSelectSql.arr,"%s%s%s%s%s%s",
		"SELECT account_id,statement_id ",
		"FROM stbs_tb_bill_statement_mast WHERE acct_period = '",
		vcPeriod.arr,
		"' AND acct_cycle = '",
		vcCycle.arr,
		"' AND bill_status = 'O'") ;
	else if(cType = 'H')
		vcSelectSql.len = sprintf((char *)vcSelectSql.arr,"%s%s%s%s%s%s",
		"SELECT account_id,statement_id ",
		"FROM stbs_tb_bill_statement_mast_h WHERE acct_period = '",
		vcPeriod.arr,
		"' AND acct_cycle = '",
		vcCycle.arr,
		"'") ;
	vcSelectSql.arr[vcSelectSql.len] = 0 ;	
	
	EXEC SQL PREPARE sel_mast_cur FROM :vcSelectSql ;
	EXEC SQL DECLARE mast_cur CURSOR for sel_mast_cur ;
	EXEC SQL OPEN  mast_cur ;
if( bDebug )
{
	fprintf(fpDbg,"vcSelectSql.arr is [%s] bill_statement_mast\n",vcSelectSql.arr) ;
	fprintf(fpDbg,"vcCycle.arr is [%s] bill_statement_mast\n",vcCycle.arr) ;
	fflush(stdout) ;
}
	while(1)
	{
		EXEC SQL FETCH mast_cur INTO :vcAccountId, :vcStatementId ;
		vcAccountId.arr[vcAccountId.len] = 0 ;
		vcStatementId.arr[vcStatementId.len] = 0 ;
		
		iRet = deal_statement_dtl((char *)vcAccountId.arr,cCycle,cPeriod,cType) ;
		if(iRet != SQLOK)
		{
			EXEC SQL CLOSE mast_cur ;
			EXEC SQL ROLLBACK ;
			return SQLERR ;
		}
		iRet = deal_stmt_remain((char *)vcStatementId.arr,cCycle,cPeriod,cType) ;
		if(iRet != SQLOK)
		{
			EXEC SQL CLOSE mast_cur ;
			EXEC SQL ROLLBACK ;
			return SQLERR ;
		}
		vcDeleteSql.len = sprintf((char *)vcDeleteSql.arr,"%s%s%s%s%s%s%s%s%s%s%s",
				"DELETE ",
				"stbs_tb_bill_statement_mast",
				" WHERE account_id = '",
				vcAccountId.arr,
				"' AND statement_id = '",
				vcStatementId.arr,
				"' AND acct_period = '",
				vcPeriod.arr,
				"' AND acct_cycle = '",
				vcCycle.arr,
				"'") ;
		vcDeleteSql.arr[vcDeleteSql.len] = 0 ;
if( bDebug )
{
	fprintf(fpDbg,"vcDeleteSql.arr is [%s] bill_statement_mast\n",vcDeleteSql.arr) ;
	fflush(stdout) ;
}
		EXEC SQL PREPARE delete_sql3 FROM :vcDeleteSql ;
		EXEC SQL EXECUTE delete_sql3 ;
		
		RecNum = RecNum + 1 ;
		if(RecNum >=1000)
		{
			EXEC SQL COMMIT ;
			RecNum	= 0 ;
		}
	}
work_bill:
	EXEC SQL CLOSE  mast_cur ;
	EXEC SQL COMMIT ;
	return SQLOK ;
work_bill_error:
	fprintf(fpLog,"\nError occured when calling bill_statement_mast function!\n");
	fflush(stdout) ;
	OracleErrorProcess("bill_statement_mast") ;
	return SQLERR ;	
}
int ProcessBillStatement_h()
{
	int	iRet = 0 ;
	int	RecNum = 0 ;
	char	cHisTableName[31] ;
	
	EXEC SQL BEGIN DECLARE SECTION ;
	varchar		vcPeriod[6+1] ;
	varchar		vcCycle[6+1] ;
	varchar		vcSelectPerCycle[256] ;
	EXEC SQL END DECLARE SECTION ;
	
	EXEC SQL WHENEVER NOT FOUND goto work_end_h ;
	EXEC SQL WHENEVER SQLERROR goto work_error_h ;
	
	vcSelectPerCycle.len = sprintf((char *)vcSelectPerCycle.arr,"%s%s%d",
	"SELECT period,cycle FROM stbs_tb_para ",
	"WHERE to_date(to_char(end_date,'yyyymmdd'),'yyyymmdd') < to_date(to_char(sysdate,'yyyymmdd'),'yyyymmdd') - ",
	iOfflineDur) ;
	
	vcSelectPerCycle.arr[vcSelectPerCycle.len] = 0 ;
	
	EXEC SQL PREPARE select_bill_h FROM :vcSelectPerCycle ;
	EXEC SQL DECLARE select_h CURSOR for select_bill_h ;
	EXEC SQL OPEN select_h ;
	while(1)
	{
		EXEC SQL FETCH select_h INTO :vcPeriod, :vcCycle ;
		vcPeriod.arr[vcPeriod.len] = 0 ;
		vcCycle.arr[vcCycle.len] = 0 ;
if( bDebug )
{
	fprintf(fpDbg,"vcPeriod.arr is [%s] ProcessBillStatement\n",vcPeriod.arr) ;
	fprintf(fpDbg,"vcCycle.arr is [%s] ProcessBillStatement\n",vcCycle.arr) ;
	fflush(stdout) ;
}		
		iRet = bill_statement_mast((char *)vcPeriod.arr,(char *)vcCycle.arr,'H') ;
		if(iRet == SQLERR)
		{
			EXEC SQL CLOSE 	select_h ;
			return SQLERR ;
		}
	}
	
	return SQLOK ;
work_end_h:
	EXEC SQL CLOSE 	select_h ;
	EXEC SQL COMMIT ;
	return SQLOK ;
work_error_h:
	fprintf(fpLog,"\nError occured when calling ProcessBillStatement_h function!\n");
	fflush(stdout) ;
	OracleErrorProcess("ProcessBillStatement_h") ;
	return SQLERR ;		
}

int ProcessBillStatement_c()
{
	int	TableNum = 0 ;
	int	iRet = 0 ;
	int	i = 0 ;
	int	RecNum = 0 ;
	char	cHisTableName[31] ;
	char	cColumnFrom[1028] ;
	char	cColumnTo[1028] ;
	
	EXEC SQL BEGIN DECLARE SECTION ;
	varchar		vcPeriod[6+1] ;
	varchar		vcCycle[6+1] ;
	varchar		vcAccountId[10+1] ;
	varchar		vcStatementId[18+1] ;
	varchar		vcSelectPerCycle[256] ;
	EXEC SQL END DECLARE SECTION ;
	
	EXEC SQL WHENEVER NOT FOUND goto work_end_c ;
	EXEC SQL WHENEVER SQLERROR goto work_error_c ;
	
	vcSelectPerCycle.len = sprintf((char *)vcSelectPerCycle.arr,"%s%s%d",
	"SELECT period,cycle FROM stbs_tb_para ",
	"WHERE to_date(to_char(end_date,'yyyymmdd'),'yyyymmdd') < to_date(to_char(sysdate,'yyyymmdd'),'yyyymmdd') - ",
	iOnlineDur[0]) ;
	
	vcSelectPerCycle.arr[vcSelectPerCycle.len] = 0 ;
	
printf("vcSelectPerCycle[%s]\n",vcSelectPerCycle.arr) ;	
	EXEC SQL PREPARE select_bill_c FROM :vcSelectPerCycle ;
	EXEC SQL DECLARE select_c CURSOR for select_bill_c ;
	EXEC SQL OPEN select_c ;
	while(1)
	{
		EXEC SQL FETCH select_c INTO :vcPeriod, :vcCycle ;
		vcPeriod.arr[vcPeriod.len] = 0 ;
		vcCycle.arr[vcCycle.len] = 0 ;
if( bDebug )
{
	fprintf(fpDbg,"C vcPeriod.arr is [%s] ProcessBillStatement\n",vcPeriod.arr) ;
	fprintf(fpDbg,"C vcCycle.arr is [%s] ProcessBillStatement\n",vcCycle.arr) ;
	fflush(stdout) ;
}		
		iRet = bill_statement_mast((char *)vcPeriod.arr,(char *)vcCycle.arr,'C') ;
		if(iRet == SQLERR)
		{
			EXEC SQL CLOSE 	select_c ;
			return SQLERR ;
		}
	}
	
	return SQLOK ;
work_end_c:
	EXEC SQL CLOSE 	select_c ;
	EXEC SQL COMMIT ;
	return SQLOK ;
work_error_c:
	fprintf(fpLog,"\nError occured when calling ProcessBillStatement_c function!\n");
	fflush(stdout) ;
	OracleErrorProcess("ProcessBillStatement_c") ;
	return SQLERR ;		
}

int ProcessBillStatement()
{
	int	TableNum = 0 ;
	int	iRet = 0 ;
	int	i = 0 ;
	int	RecNum = 0 ;
	char	cHisTableName[31] ;
	char	cColumnFrom[1028] ;
	char	cColumnTo[1028] ;
	
	EXEC SQL BEGIN DECLARE SECTION ;
	varchar		vcPeriod[6+1] ;
	varchar		vcCycle[6+1] ;
	varchar		vcAccountId[10+1] ;
	varchar		vcStatementId[18+1] ;
	varchar		vcSelectPerCycle[256] ;
	EXEC SQL END DECLARE SECTION ;
	
	EXEC SQL WHENEVER NOT FOUND goto work_end ;
	EXEC SQL WHENEVER SQLERROR goto work_error ;
	
	iRet = GetTableNameFromManage(&TableNum,(char *)"2",(char *)"STBS_TB_BILL_STATEMENT_MAST") ;
	if(iRet == SQLERR)
		return SQLERR ;

	if(TableNum != 0)
	{
		iRet = ProcessBillStatement_c() ;
		if(iRet == SQLERR)
			return SQLERR ;
			
		iRet = ProcessBillStatement_h() ;
		if(iRet == SQLERR)
			return SQLERR ;
	}
	
	return SQLOK ;
work_end:
	return SQLOK ;
work_error:
	fprintf(fpLog,"\nError occured when calling ProcessBillStatement function!\n");
	fflush(stdout) ;
	OracleErrorProcess("ProcessBillStatement") ;
	return SQLERR ;		
}
int ProcessAcctSetoff()
{
	int	TableNum = 0 ;
	int	iRet = 0 ;
	char	cColumnFrom[1028] ;
	char	cColumnTo[1028] ;
	
	EXEC SQL BEGIN DECLARE SECTION ;
	varchar		vcInsertSql[512] ;
	varchar		vcDeleteSql[512] ;
	EXEC SQL END DECLARE SECTION ;
	
	EXEC SQL WHENEVER NOT FOUND goto setoff_end ;
	EXEC SQL WHENEVER SQLERROR goto setoff_error ;
	
	iRet = GetTableNameFromManage(&TableNum,(char *)"2",(char *)"STBS_TB_ACCT_SETOFF") ;
	if(iRet == SQLERR)
		return SQLERR ;
	if(TableNum != 0)
	{
		memset(cColumnFrom,0,sizeof(cColumnFrom)) ;
		memset(cColumnTo,0,sizeof(cColumnTo)) ;
				
		iRet = GetColumnOfTable("STBS_TB_ACCT_SETOFF_H",cColumnFrom,cColumnTo,"2") ;
		if(iRet == SQLERR)
			return SQLERR ;
		
		vcInsertSql.len = sprintf((char *)vcInsertSql.arr,"%s%s%s%s%s%s%s%s%s%d",
			"INSERT INTO ",
			"STBS_TB_ACCT_SETOFF_H",
			"(",
			cColumnTo,
			") SELECT ",
			cColumnFrom,
			" FROM ",
			"STBS_TB_ACCT_SETOFF",
			" WHERE to_date(to_char(pay_date,'yyyymmdd'),'yyyymmdd') < to_date(to_char(sysdate,'yyyymmdd'),'yyyymmdd') -",
			iOnlineDur[0]) ;
		vcInsertSql.arr[vcInsertSql.len] = 0 ;
printf("vcInsertSql[%s]\n",vcInsertSql.arr) ;
if( bDebug )
{
	fprintf(fpDbg,"vcInsertSql.arr is [%s] ProcessAcctSetoff\n",vcInsertSql.arr) ;
	fflush(stdout) ;
}
		EXEC SQL PREPARE insert_sql4 FROM :vcInsertSql ;
		EXEC SQL EXECUTE insert_sql4 ;
		
		if(sqlca.sqlerrd[2] == 0)
			return SQLOK ;
		
		vcDeleteSql.len = sprintf((char *)vcDeleteSql.arr,"%s%s%s%d",
			"DELETE ",
			"STBS_TB_ACCT_SETOFF",
			" WHERE to_date(to_char(pay_date,'yyyymmdd'),'yyyymmdd') < to_date(to_char(sysdate,'yyyymmdd'),'yyyymmdd') -",
			iOnlineDur[0]) ;
			
printf("vcDeleteSql[%s]\n",vcDeleteSql.arr) ;
if( bDebug )
{
	fprintf(fpDbg,"vcDeleteSql.arr is [%s] ProcessAcctSetoff\n",vcDeleteSql.arr) ;
	fflush(stdout) ;
}
		EXEC SQL PREPARE delete_sql4 FROM :vcDeleteSql ;
		EXEC SQL EXECUTE delete_sql4 ; 
		
		vcDeleteSql.len = 0 ;
		
		vcDeleteSql.len = sprintf((char *)vcDeleteSql.arr,"%s%s%s%d",
			"DELETE ",
			"STBS_TB_ACCT_SETOFF",
			" WHERE to_date(to_char(pay_date,'yyyymmdd'),'yyyymmdd') < to_date(to_char(sysdate,'yyyymmdd'),'yyyymmdd') -",
			iOfflineDur[0]) ;
if( bDebug )
{
	fprintf(fpDbg,"vcDeleteSql.arr is [%s] ProcessAcctSetoff\n",vcDeleteSql.arr) ;
	fflush(stdout) ;
}
		EXEC SQL PREPARE delete_sql5 FROM :vcDeleteSql ;
		EXEC SQL EXECUTE delete_sql5 ; 
	}
setoff_end:
	EXEC SQL COMMIT ;
	return SQLOK ;
setoff_error:	
	fprintf(fpLog,"\nError occured when calling ProcessAcctSetoff function!\n");
	fflush(stdout) ;
	OracleErrorProcess("ProcessAcctSetoff") ;
	return SQLERR ;	
}
/*main function*/
int main(int argc,char *argv[])
{
	int	i = 0 ;
	int	iRet = 0 ;
	
	char	StartDate[4+1] ; 
	
	EXEC SQL BEGIN DECLARE SECTION ;
	varchar		vcExcuteTime[14+1] ;
	varchar		vcEndTime[14+1] ;
	EXEC SQL END DECLARE SECTION ;
	
	if (connect_database() == SQLERR)
	{
		printf("Failed to connect to Database!\n") ;
		printf("Check your username and password!\n") ;
		exit(-1) ;
	}
	
	EXEC SQL WHENEVER NOT FOUND continue ;
	EXEC SQL WHENEVER SQLERROR continue ;
	
	EXEC SQL SELECT TO_CHAR(sysdate,'yyyymmddhh24miss') INTO :vcExcuteTime FROM DUAL ;
	vcExcuteTime.arr[vcExcuteTime.len] = '\0' ;
	
	memset(StartDate,0,sizeof(StartDate)) ;
	memcpy(StartDate,&vcExcuteTime.arr[4],4) ;
	
	memset(logfilename,0,sizeof(logfilename)) ;
	sprintf(logfilename,"%s%04sbackup.log",getenv("LOG_DIR"),StartDate) ;
	
	if((fpLog = fopen(logfilename,"a+"))==NULL)
	{
		printf("Can't open the logfile[%s]\n",logfilename) ;
		fflush(stdout) ;
		exit(-1) ;
	} 
	
	fprintf(fpLog,"Begin time is at [%s]!\n",vcExcuteTime.arr) ;
printf("1111111111111111\n") ;	
	iRet = MoveRecordToHistory("1") ;
	if(iRet != SQLOK )
	{
		fprintf(fpLog,"Failed to MoveRecordToHistory!\n") ;
		fflush(stdout) ;
	}
printf("222222222222222222222\n") ;		
	iRet = ProcessWorkOrder('C') ;
printf("222222222222222222222\n") ;
	if(iRet != SQLOK )
	{
		fprintf(fpLog,"Failed to  ProcessWorkOrder('C') !\n") ;
		fflush(stdout) ;
	}
printf("333333333333333333333\n") ;			
	iRet = ProcessWorkOrder('H') ;
printf("333333333333333333333\n") ;
	if(iRet != SQLOK )
	{
		fprintf(fpLog,"Failed to ProcessWorkOrder!\n") ;
		fflush(stdout) ;
	}
printf("44444444444444444\n") ;		
	iRet = ProcessRevenue() ;
printf("44444444444444444\n") ;	
	if(iRet != SQLOK )
	{
		fprintf(fpLog,"Failed to ProcessRevenue!\n") ;
		fflush(stdout) ;
	}
printf("55555555555555555555\n") ;		
	iRet = ProcessBillStatement() ;
printf("55555555555555555555\n") ;
	if(iRet != SQLOK )
	{
		fprintf(fpLog,"Failed to ProcessBillStatement!\n") ;
		fflush(stdout) ;
	}
printf("6666666666666666666\n") ;		
	iRet = ProcessAcctSetoff() ;
printf("6666666666666666666\n") ;
	if(iRet != SQLOK )
	{
		fprintf(fpLog,"Failed to ProcessAcctSetoff!\n") ;
		fflush(stdout) ;
	}
		
	EXEC SQL SELECT TO_CHAR(sysdate,'yyyymmddhh24miss') INTO :vcEndTime FROM DUAL ;
	vcEndTime.arr[vcEndTime.len] = '\0' ;
	
	fprintf(fpLog,"End time is at [%s]!\n",vcEndTime.arr) ;
	
	DetachFromDB() ;
	return SQLOK ;

}

⌨️ 快捷键说明

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