proc分页查询

本文档详细介绍了名为PrcsTradeFeeInqry的函数,该函数用于处理交易费用查询的分页操作。通过调用FtchNumOfRcrdsDB、FtchTtlFeeAmntDB和FtchTradeFeeMktInfrmnDB等子函数,获取并处理数据。内容涉及到SQL查询构造,包括日期条件和分页参数,以及错误处理和结果发送。
摘要由CSDN通过智能技术生成

 

 /***************************************************************************
****************************************************************************
**   FUNCTION NAME     :  PrcsTradeFeeInqry                               **
**                                                                        **
**   INPUT PARAMS      :  TRADE_FEE_INQRY_IN *pTradeFeeInqryIn            **
**                                                     **
**   OUTPUT PARAMS     :                                                  **
**                                                                        **
**   DESCRIPTION       :                                                  **
**                                                                        **
**   NON LOCAL DATA REF:                                                  **
**                                                                        **
**   CALLING FUNCTIONS :                                              **
**                                                                        **
**   RETURN VALUE      :  iReturnValue                                    **
**                                                     **
**   MOD HISTORY       :                                      **
****************************************************************************
***************************************************************************/
RETURN_VALUE PrcsTradeFeeInqry(TRADE_FEE_INQRY_IN *pTradeFeeInqryIn)
{
  RETURN_VALUE              iReturnValue    = 0     ;
  BOOL                      bStatusValue    = FALSE ;
  COUNT                     iNumOfRecord    = 0     ;
  COUNT                     iResult         = 0     ;
  AMNT                      dTtlFeeAmnt     = 0     ;
  INDC                      iCheckLastPkt   = 0     ;
  COUNT                     iNumOfRcrd      = 0     ;

  TRADE_FEE_INQRY_IN_BODY    sTradeFeeInqryInBody    ;
  TRADE_FEE_INQRY_IN_BODY    *pTradeFeeInqryInBody   ;

  TRADE_FEE_INQRY_OUT_BODY   saTradeFeeInqryOutBody[TRADE_FEE_RECORDS];

  TRADE_FEE_INQRY_OUT        sTradeFeeInqryOut        ;
  TRADE_FEE_INQRY_OUT        *pTradeFeeInqryOut       ;

  pTradeFeeInqryInBody   =   &sTradeFeeInqryInBody    ;
  pTradeFeeInqryOut      =   &sTradeFeeInqryOut       ;

  memset(pTradeFeeInqryInBody,NULL,sizeof(CDC_DEAL_INQRY_IN_BODY));
  memset(pTradeFeeInqryOut,NULL,sizeof(CDC_DEAL_INQRY_OUT));

  pTradeFeeInqryInBody = &pTradeFeeInqryIn->sTradeFeeInqryInBody ;

  #ifdef DBG
    ProcessEventLog(TRC_DBG,ERR_TRC,Info(iReturnValue),"%s","Entered function : PrcsTradeFeeInqry");
  #endif

  #ifdef DBG
    ProcessEventLog(TRC_DBG,ERR_TRC,0,"Receive value Mktsrno is <%ld> ,caFromDate is <%s>, caToDate is <%s>, lDealSrno is <%lf>",pTradeFeeInqryInBody->lMktSrno,   pTradeFeeInqryInBody->caFromDate,pTradeFeeInqryInBody->caToDate,pTradeFeeInqryInBody->caDealSrno);
  #endif

  memset(saTradeFeeInqryOutBody,NULL,
    sizeof(TRADE_FEE_INQRY_OUT_BODY)*TRADE_FEE_RECORDS);

  iReturnValue = FtchNumOfRcrdsDB(pTradeFeeInqryInBody,&iNumOfRcrd);

  if(iReturnValue NOT_EQUAL 0 && abs(iReturnValue) NOT_EQUAL RECORD_NOT_FOUND)
  {
    ProcessEventLog(TRC_ERR,ERR_APPL,Warn(iReturnValue),"Error in function FtchNumOfRcrdsDB from function PrcsTradeFeeInqry");
    return (iReturnValue);
  }

  iResult = iNumOfRcrd/TRADE_FEE_RECORDS ;

  iReturnValue = FtchTtlFeeAmntDB(pTradeFeeInqryInBody,&dTtlFeeAmnt);

  if(iReturnValue NOT_EQUAL 0 && abs(iReturnValue) NOT_EQUAL RECORD_NOT_FOUND)
  {
    ProcessEventLog(TRC_ERR,ERR_APPL,Warn(iReturnValue),"Error in function FtchTtlFeeAmntDB from function PrcsTradeFeeInqry");
    return (iReturnValue);
  }

  iReturnValue = FtchTradeFeeMktInfrmnDB(pTradeFeeInqryInBody,
                                        saTradeFeeInqryOutBody,
                                        &iNumOfRecord);

  if(abs(iReturnValue)  EQUAL 0)
  {
    iNumOfRecord  = TRADE_FEE_RECORDS ;
  }
  else if(abs((iReturnValue) EQUAL RECORD_NOT_FOUND&&iNumOfRecord NOT_EQUAL 0)
                  ||
          abs((iReturnValue) EQUAL NO_ERROR&&pTradeFeeInqryInBody->iPageNum EQUAL iResult))
  {
    /** This is for check last packet **/
    pTradeFeeInqryOut->saTradeFeeInqryOutBodyDtls.iLastPktOrNot = 1 ;
  }
  else if(abs(iReturnValue) EQUAL RECORD_NOT_FOUND&&iNumOfRecord EQUAL 0)
  {
    memset(pTradeFeeInqryOut,NULL,sizeof(TRADE_FEE_INQRY_OUT));
    memcpy(&pTradeFeeInqryOut->sHeader,
         &pTradeFeeInqryIn->sHeader,sizeof(HEADER));
    memcpy(&pTradeFeeInqryOut->sTrailer,
         &pTradeFeeInqryIn->sTrailer,sizeof(TRAILER));
    pTradeFeeInqryOut->sHeader.error_code = RECORD_NOT_FOUND ;

    /** This is for check last packet **/
    pTradeFeeInqryOut->saTradeFeeInqryOutBodyDtls.iLastPktOrNot = 1 ;
    pTradeFeeInqryOut->saTradeFeeInqryOutBodyDtls.dTtlFeeAmnt = dTtlFeeAmnt;

  }else if(iReturnValue NOT_EQUAL 0 && abs(iReturnValue) NOT_EQUAL RECORD_NOT_FOUND)
  {
    ProcessEventLog(TRC_ERR,ERR_APPL,Warn(iReturnValue),"Error in function FtchTradeFeeMktInfrmnDB from function PrcsTradeFeeInqry");
    return (iReturnValue);
  }

  pTradeFeeInqryOut->saTradeFeeInqryOutBodyDtls.dTtlFeeAmnt = dTtlFeeAmnt;

  #ifdef DBG
    ProcessEventLog(TRC_DBG,ERR_TRC,0,"Total Fee Amnt Is ==> <%lf> ",pTradeFeeInqryOut->saTradeFeeInqryOutBodyDtls.dTtlFeeAmnt);
  #endif

  iReturnValue =  PpltInfoForTradeFeeInqry(iNumOfRecord,
                                          pTradeFeeInqryIn,
                                          saTradeFeeInqryOutBody,
                                          pTradeFeeInqryOut);

  if(iReturnValue NOT_EQUAL 0)
  {
    ProcessEventLog(TRC_ERR,ERR_APPL,Warn(iReturnValue),"Error in function PpltInfoForCdcDealInqry from function PrcsTradeFeeInqry");
    return (iReturnValue);
  }

  /*******************************************************************
    Return the total number of records which had fetched.
  ********************************************************************/
  pTradeFeeInqryOut->saTradeFeeInqryOutBodyDtls.iNumOfRecords =iNumOfRecord ;
  #ifdef DBG
    ProcessEventLog(TRC_DBG,ERR_TRC,0,"Total Number Of Records Fetched Is ==><%d> iLastPktOrNot is   ==><%d>",pTradeFeeInqryOut->saTradeFeeInqryOutBodyDtls.iNumOfRecords,pTradeFeeInqryOut->saTradeFeeInqryOutBodyDtls.iLastPktOrNot);
  #endif

  iReturnValue  = SendToTrader(pTradeFeeInqryOut,
                                sizeof(TRADE_FEE_INQRY_OUT),
                                TC_TRADE_FEE_OUT);
  if(iReturnValue NOT_EQUAL 0)
  {
    ProcessEventLog(TRC_ERR,ERR_APPL,Warn(iReturnValue),"Error in function : SendToTrader from function PrcsTradeFeeInqry");
    return (iReturnValue);
  }

  #ifdef DBG
    ProcessEventLog(TRC_DBG,ERR_TRC,Info(iReturnValue),"Exiting function: PrcsTradeFeeInqry");
  #endif

  return (iReturnValue);
}

 

 

 

 

 

 

 

 

 

==================== pc file ========================

 

 

 

 

/**************************************************************************
***************************************************************************
**                                                                       **
**   Function Name : FtchTradeFeeMktInfrmnDB                            **
**                                                                       **
**   Input Params  :                                  **
**                                                                       **
**   Output Params :                                                     **
**                                                                       **
**   Description   :                                                     **
**                                                                       **
**   Return Value  : returns 0 on success and sqlcode on failure         **
**                                                                       **
**   Mod History   :                                                     **
**                                                                       **
***************************************************************************
**************************************************************************/
RETURN_VALUE FtchTradeFeeMktInfrmnDB(
                                TRADE_FEE_INQRY_IN_BODY  *pTradeFeeInqryInBody,
                                TRADE_FEE_INQRY_OUT_BODY *pTradeFeeInqryOutBody,
                                  COUNT                   *pCount)
{
  #ifdef DBG
    ProcessEventLog(TRC_DBG,ERR_TRC,Info(0),"Entered FtchTradeFeeMktInfrmnDB");
  #endif

 EXEC SQL BEGIN DECLARE SECTION              ;
 struct  sqlca   sqlca                       ;
 QUERY_STRING    caQueryString[MAX_QUERY_LEN];
  QUERY_STRING    caCnclString[MAX_QUERY_LEN] ;
  QUERY_STRING    caThirdString[MAX_QUERY_LEN] ;
  COUNT           iDepth  =  TRADE_FEE_RECORDS ;
  DESC            caTempStr[30]               ;
  EXEC SQL END DECLARE SECTION                ;


  memset(caQueryString,NULL,QUERY_STRING_LNGTH);
  strcpy(caQueryString," SELECT *  FROM (SELECT QR.*, ROWNUM AS RS FROM ( ");
  strcat(caQueryString," SELECT ");
  strcat(caQueryString," NVL(FEE_DEAL_AMNT,0),");
  strcat(caQueryString," NVL(FEE_STLMNT_AMNT,0),");
  strcat(caQueryString," NVL(FEE_FEE_AMNT,0), ");
  strcat(caQueryString," NVL(FEE_FEE_MKT_SRNO,0) ,");
 strcat(caQueryString," NVL(FEE_DEAL_DEAL_IDNTY,0) ,");
  strcat(caQueryString," NVL(FEE_TRADER_USER_ID,0) ,");
  strcat(caQueryString," NVL(FEE_CP_USER_ID,0) ,");
  strcat(caQueryString," NVL(FEE_CP_ENTY_CODE,0) ,");
  strcat(caQueryString," NVL(FEE_DEAL_DRCTN_INDC,0) ");
  strcat(caQueryString," FROM TRDX_FEE_TABLE");

  memset(caCnclString,NULL,sizeof(QUERY_STRING_LNGTH));
  sprintf(caCnclString," WHERE FEE_FEE_MKT_SRNO = '%ld' AND FEE_DEAL_DATE >= to_date('%s','yyyymmdd') AND FEE_DEAL_DATE <= to_date('%s','yyyymmdd') ",
    pTradeFeeInqryInBody->lMktSrno,
    pTradeFeeInqryInBody->caFromDate,
    pTradeFeeInqryInBody->caToDate);
  strcat(caQueryString,caCnclString);

  if(!strcmp(pTradeFeeInqryInBody->caDealSrno,"NULL"))
  {
  }
  else
  {
    memset(caTempStr,0,sizeof(caTempStr));
    strcpy(caTempStr,"'%");
    strcat(caTempStr,pTradeFeeInqryInBody->caDealSrno);
    strcat(caTempStr,"%'");

    memset(caCnclString,0,sizeof(caCnclString));
    sprintf(caCnclString," AND FEE_DEAL_DEAL_IDNTY like %s ",caTempStr);
    strcat(caQueryString,caCnclString);
  }

  memset(caThirdString,NULL,sizeof(QUERY_STRING_LNGTH));
  sprintf(caThirdString," ) QR) WHERE RS >= ('%d'-1)*TRADE_FEE_RECORDS+1 AND RS <=('%d')*TRADE_FEE_RECORDS",pTradeFeeInqryInBody->iPageNum,pTradeFeeInqryInBody->iPageNum);
  strcat(caQueryString,caThirdString);

  #ifdef DBG
      ProcessEventLog(TRC_DBG,ERR_TRC,Info(0),"query_string : [%s]",caQueryString);
  #endif

  EXEC SQL PREPARE FtchTradeFeeQueryDB FROM : caQueryString ;

  if(sqlca.sqlcode)
  {
    ProcessEventLog(TRC_DBG,ERR_TRC,Warn(0),"Error in Prepare Statement. sqlcode : [%d]",sqlca.sqlcode);
    return(sqlca.sqlcode);
  }

  EXEC SQL DECLARE FTCH_TRADE_FEE_CURSOR CURSOR FOR FtchTradeFeeQueryDB ;

  if( sqlca.sqlcode NOT_EQUAL NO_ERROR )
  {
    ProcessEventLog(TRC_WRN,ERR_DB,Warn(sqlca.sqlcode),
    "Err in declaring cursor FTCH_TRADE_FEE_CURSOR ");
    return sqlca.sqlcode ;
  }

  EXEC SQL OPEN FTCH_TRADE_FEE_CURSOR;

  if(sqlca.sqlcode NOT_EQUAL NO_ERROR)
  {
    ProcessEventLog(TRC_DBG,ERR_DB,Warn(sqlca.sqlcode)," Error in opening cursor FTCH_TRADE_FEE_CURSOR");
    return(sqlca.sqlcode);
  }

  EXEC SQL FOR :iDepth FETCH FTCH_TRADE_FEE_CURSOR
    INTO  :pTradeFeeInqryOutBody;

  *pCount  =  sqlca.sqlerrd[2]   ;

 if(sqlca.sqlcode && abs(sqlca.sqlcode) NOT_EQUAL RECORD_NOT_FOUND)
 {
    ProcessEventLog(TRC_DBG,ERR_DB,Warn(sqlca.sqlcode),"%s"
    ,"Error in fetching cursor FTCH_TRADE_FEE_CURSOR.");
    return(sqlca.sqlcode);
 }

  #ifdef DBG
    ProcessEventLog(TRC_DBG,ERR_TRC,sqlca.sqlcode,"%s"," Exit FtchTradeFeeMktInfrmnDB");
  #endif

 return sqlca.sqlcode ;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值