首页 > 代码库 > esql开发总结

esql开发总结


1 定义或者声明方法
int method(char *arg1,char* arg2...);
  实现方法
int method(char *arg1,char* arg2...)
    EXEC SQL BEGIN DECLARE SECTION;
        char *arg1;
        char* arg2;
   EXEC SQL END DECLARE SECTION;
 {
    EXEC SQL BEGIN DECLARE SECTION;
    定义自己的变量,只有此处定义的局部变量可以在sql中直接使用。
    EXEC SQL END DECLARE SECTION;
    初始化变量
     memset(sqlbuf,0x00,sizeof(sqlbuf));
     strncpy(from,to);
     deccvdbl(0,&decimal类型变量);
     return 0;
 }
 2 在.h中定义结构体
   如头文件test.h 内容如下:
    ...
    EXEC SQL BEGIN DECLARE SECTION;
    typedef struct  LYNAME{
        decimal x ;     
        char y[1+1];
        char z[1+1];       
        int u;
    }x;
    EXEC SQL END DECLARE SECTION;
    ...
    正确引用结构体LYNAME,需使用下边的引入方式
    EXEC SQL include 相对路径/test.h;
    而不是
    #include<test.h>
    
3 常用的打印日志方法
  printf("[%s][%d] GetTaxData start\n",__FILE__, __LINE__);
  txlog(LOG_INFO,"current ywrq[%s] =%s\n",__FILE__, __LINE__,x,y);
  #define etxlog(loglevel,format,args...) txlog(loglevel,format,__FILE__,__LINE__,##args);txlogflush()
  #define eetxlog(loglevel,format) txlog(loglevel,format,__FILE__,__LINE__);txlogflush()
  eetxlog(LOG_INFO,"INFO:SSNjbbzlZCZRDZ end.FAILED");
  sprintf(pOutbuf,"FAILED:SELECT NJGRJH.jhbh[%s]qybh[%s]grbh[%s]sqlcode[%d]"
                ,tb_njdl.jhbh,tb_njdl.qybh,val[0],sqlca.sqlcode);
  etxlog(LOG_ERROR,"%s",pOutbuf);
  fprintf(fpLog,"%s|%d|%d|%s|%d|%s\n",strSerial,tb_njdl.clcs,nErrNum++,"数据库错误",nLineCnt,"数据库错误");
 
  4 打印decimal公共方法
 void PrintDecimalToString(ptr_val,desc)
EXEC SQL BEGIN DECLARE SECTION;
        decimal *ptr_val;
        char *desc;
EXEC SQL END DECLARE SECTION;
{
  char decimalResult[30];
  memset(decimalResult,0x00,sizeof(decimalResult));    
  dectoasc(ptr_val,decimalResult,29,8);//将decmail值变成asc码
  txlog(LOG_INFO,"%s = [%s]\n",__FILE__, __LINE__,desc,decimalResult);
  printf("[%s][%d] %s=[%s] \n",__FILE__, __LINE__,desc,decimalResult);
}