📄 std_qry_yx.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 + -