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

📄 std_qry_yx.c

📁 电力与银行通讯的源码 1.应用tuxedo中间件. 2.与银行的前置机通讯. 3.proc*c 的应用
💻 C
字号:
#include "public.h"#ifdef __cplusplusextern "C"#endif/*****************************************************************程序名称:电力营销管理信息系统与CallCenter接口统一标准查询服务程序功能:数据解包、调用后台Up_Call_GetResult统一存储过程接口、数据打包程序作者:叶幼光编写日期:2002/09/12相关内容:标准表-------------------I_CALL_SERVER		  入口存储过程-------------Up_Call_GetResult		  寻参存储过程-------------Up_Call_GetParam******************************************************************/void#ifdef MW_CICSmain(MW_SVCINFO * transb)#endif#ifdef MW_TUXEDOSTD_QRY_YX(MW_SVCINFO * transb)#endif{	/*定义输入参数*/	char szInParam[256] = "";	char szInServer[31]="";  	/*定义输出参数*/    char szOutFieldName[100][21];	int  izOutFieldLen[100];	int  izOutFieldCount=0;	char szFieldName[21]="";	int  izFieldLen=0;	char szSPID[9]="";	char szServerTable[31]="";    char szOutRes[100][101];	char *szResult ;	/*主要信息结果集*/	int izResultCount ;	int  iReturn = 0;	/*结果记录数*/	/*定义数据库数据处理变量*/	/*定义临时变量*/	char szSql[2000] = "";	char szTemp[200] = "";	void *ppVar[100];	char *szInBuf;	char *szOutBuf;	int  nBufferSize = 0;	unsigned char pParam[] = TYPE_CHAR TYPE_CHAR TYPE_INT;	int nStatus = 0;	char szMsg[255]="";	int i,j;	BOOL bRet;	CMiddleWare mwMidWare;	MW_Init(&mwMidWare,transb);	szInBuf = MW_GetInBuf(&mwMidWare);	if (szInBuf == NULL)	{		gf_Return(&mwMidWare,-1,"没有输入参数!");		return;	}	/*取输入参数*/	strncpy(szInServer,szInBuf,30);    szInServer[31]='\0';	RightTrim(szInServer);	strncpy(szInParam,szInBuf+30,strlen(szInBuf)-30);	szInParam[strlen(szInBuf)-30] = '\0';	/*-------------*/    MW_Trace(szInBuf);    MW_Trace(szInParam);    /*-------------*/	/*变量初始化*/	for (i=0;i<100;i++)	{		for(j=0;j<20;j++)		szOutFieldName[i][j]=' ';        for(j=0;j<100;j++)		szOutRes[i][j]=' ';		izOutFieldLen[i]=0;	}		/*1、获取本次连接的进程号*/	ppVar[0] = szSPID;	sprintf(szSql,"select convert(char(8),@@spid)");	if(!DB_SQLPrepare(&theDatabase, szSql, ppVar, 1))	{		sprintf(szMsg,"服务名:%s,错误信息:SQL = %s Prepare失败!",szInServer,szSql);		gf_Return(&mwMidWare,-1,szMsg);		return;	}	if (DB_SQLFetch(&theDatabase) == TRUE)		{		DB_SQLDone(&theDatabase);	}	else	{		DB_SQLDone(&theDatabase);		gf_Return(&mwMidWare,-1,szMsg);		return;	}    /*获取本次服务的结果表*/	ppVar[0] = szServerTable;    sprintf(szSql,"select convert(char(30),TABLENAME) from I_CALL_SERVER where SERVERNAME='%s'",szInServer);		if(!DB_SQLPrepare(&theDatabase, szSql, ppVar, 1))	{		sprintf(szMsg,"服务名:%s,错误信息:SQL = %s Prepare失败!",szInServer,szSql);		gf_Return(&mwMidWare,-1,szMsg);		return;	}	if (DB_SQLFetch(&theDatabase) == TRUE)		{		DB_SQLDone(&theDatabase);	}	else	{		DB_SQLDone(&theDatabase);		gf_Return(&mwMidWare,-1,szMsg);		return;	}	szServerTable[30]='\0';	RightTrim(szServerTable);    /*3、获取结果集字段名称与长度*/	ppVar[0] = szFieldName;	ppVar[1] = &izFieldLen;	sprintf(szSql,"select name,length from syscolumns where id=object_id(\'%s\') and name<>'ID' order by colid",szServerTable);	if(!DB_SQLPrepare(&theDatabase, szSql, ppVar, 2))	{		sprintf(szMsg,"服务名:%s,错误信息:SQL = %s Prepare失败!",szInServer,szSql);		gf_Return(&mwMidWare,-1,szMsg);		return;	}	i=0;	while(DB_SQLFetch(&theDatabase) == TRUE)	{					szFieldName[20]='\0';		sprintf(szTemp,"%s",szFieldName);		sprintf(szOutFieldName[i+1],"%s",szFieldName);		//memcpy(szOutFieldName[i],szFieldName,strlen(szFieldName)+1);						MW_Trace(szOutFieldName[0]);		MW_Trace(szOutFieldName[1]);		MW_Trace(szOutFieldName[2]);		izOutFieldLen[i]=izFieldLen;		i++;	}	izOutFieldCount=i;    DB_SQLDone(&theDatabase);	/*4、执行查询存储过程*/	ppVar[0]=&iReturn;	bRet = DB_ExecuteStoredProcedureWithResult(&theDatabase, "Up_Call_GetResult", &nStatus, 		ppVar,1,		pParam,szInServer,szInParam,0);	if(!bRet || nStatus)	//失败	{		gf_Return(&mwMidWare,-1,"执行Up_Call_GetResult失败");		return;	}	/*5、获取结果集数目*/	ppVar[0] = &izResultCount;    sprintf(szSql,"select count(*) as ResCount from %s where ID=%s",szServerTable,szSPID);	if(!DB_SQLPrepare(&theDatabase, szSql, ppVar, 1))	{		sprintf(szMsg,"服务名:%s,错误信息:SQL = %s Prepare失败!",szInServer,szSql);		gf_Return(&mwMidWare,-1,szMsg);		return;	}	if (DB_SQLFetch(&theDatabase) == TRUE)		{		DB_SQLDone(&theDatabase);	}	else	{		DB_SQLDone(&theDatabase);		gf_Return(&mwMidWare,-1,szMsg);		return;	}		/*6、根据数据分配空间*/	    nBufferSize=8;	for(i=0;i<izOutFieldCount;i++)	{		RightTrim(szOutFieldName[i+1]);		nBufferSize =nBufferSize+2+strlen(szOutFieldName[i+1]);		nBufferSize =nBufferSize+(3+izOutFieldLen[i])*izResultCount;	}	nBufferSize=nBufferSize+5*izResultCount;	MW_AllocateString(&mwMidWare,nBufferSize + 40);	/*最大设置32K的空间*/	szOutBuf = MW_GetOutBuf(&mwMidWare);	if (szOutBuf == NULL)	{		gf_Return(&mwMidWare,-1,"分配空间失败!");		return;	}	szResult = szOutBuf + 12;	for(i=0;i<izOutFieldCount;i++)	{  		//RightTrim(szOutFieldName[i]);		MW_Trace(szOutFieldName[i]);    	sprintf(szTemp,"%1s%s%1s","<",szOutFieldName[i+1],">");		memcpy(szResult  ,szTemp,strlen(szOutFieldName[i+1])+2);        szResult =	szResult+strlen(szOutFieldName[i+1])+2;		}	/*7、返回结果集*/	ppVar[0]=&iReturn;	for (i=0;i<izOutFieldCount;i++)	{		ppVar[i+1] = szOutRes[i];	}	    sprintf(szSql,"select * from %s where ID=%s",szServerTable,szSPID);	if(!DB_SQLPrepare(&theDatabase, szSql, ppVar, izOutFieldCount+1))	{		sprintf(szMsg,"服务名:%s,错误信息:SQL = %s Prepare失败!",szInServer,szSql);		gf_Return(&mwMidWare,-1,szMsg);		return;	}	while (DB_SQLFetch(&theDatabase) == TRUE)		{		sprintf(szTemp,"%3s","<R>");		memcpy(szResult  ,szTemp,3);		szResult =	szResult+3;	    	for(i=0;i<izOutFieldCount;i++)		{  			szOutRes[i][100]='\0';			RightTrim(szOutRes[i]);			sprintf(szTemp,"%3s%s","<F>",szOutRes[i]);			memcpy(szResult,szTemp,strlen(szOutRes[i])+3);		    szResult =	szResult+strlen(szOutRes[i])+3;			}					//sprintf(szTemp,"%4s","</R>");		//memcpy(szResult  ,szTemp,4);		//szResult =	szResult+4;		}    DB_SQLDone(&theDatabase);	/*8、清除结果集*/    sprintf(szSql,"delete from %s where ID=%s",szServerTable,szSPID);	DB_ExecuteSQL(&theDatabase,szSql);		if (nBufferSize > 0)		sprintf(szTemp,"%8d%4d",izResultCount,izOutFieldCount);	else		strcpy(szTemp,"   0");	memcpy(szOutBuf,szTemp,12);  	DB_CommitTransaction(&theDatabase);	MW_Return(&mwMidWare);//	gf_Return(&mwMidWare,0,"");	return;}

⌨️ 快捷键说明

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