数值类型
表1列出了ecpg提供的数值类型(numeric\decimal)数据的常用接口:
| 
       API接口  | 
     
       接口描述  | 
     
       说明  | 
    
|---|---|---|
| 
       numeric* PGTYPESnumeric_new(void)  | 
     
       请求一个指向新分配的numeric变量的指针。  | 
     
       该函数在堆上创建numeric变量,返回值为numeric*类型。  | 
    
| 
       decimal* PGTYPESdecimal_new(void)  | 
     
       请求一个新分配的decimal变量的指针。  | 
     
       该函数在堆上创建decimal变量,返回值为decimal*类型。  | 
    
| 
       void PGTYPESnumeric_free(numeric* var)  | 
     
       释放一个numeric类型变量的内存。  | 
     
       该函数释放通过PGTYPESnumeric_new函数创建的numeric*类型变量。  | 
    
| 
       void PGTYPESdecimal_free(decimal*)  | 
     
       释放一个decimal类型变量的内存。  | 
     
       该函数释放通过PGTYPESdecimal_new函数创建的decimal*类型变量。  | 
    
| 
       numeric* PGTYPESnumeric_from_asc(char* str, char** endptr)  | 
     
       从字符串中解析一个numeric类型。  | 
     
       有效格式如:-2,.794,+3.44,592.49E07或者-32.84e-4。如果值解析成功,则返回一个有效指针,否则返回空指针。ecpg支持解析完整的字符串,目前不支持存储在*endptr中的第一无效字符的地址,可以设置endptr为空。  | 
    
| 
       char* PGTYPESnumeric_to_asc(numeric* num, int dscale)  | 
     
       返回由malloc分配的字符串的指针,它包含numeric类型num的字符串表达。  | 
     
       numeric值将被使用dscale小数位打印,必要时会取整。  | 
    
| 
       int PGTYPESnumeric_add(numeric* var1, numeric* var2, numeric* result)  | 
     
       将两个numeric变量相加放到第三个numeric变量中。  | 
     
       该函数把变量var1和var2相加放到结果变量result中。成功时该函数返回0,出错时返回-1。  | 
    
| 
       int PGTYPESnumeric_sub(numeric* var1, numeric* var2, numeric* result)  | 
     
       将两个numeric变量相减并且把结果返回到第三个numeric变量。  | 
     
       该函数把变量var2从变量var1中减除。该操作的结果被存储在变量result中。成功时该函数返回0,出错时返回-1。  | 
    
| 
       int PGTYPESnumeric_mul(numeric* var1, numeric* var2, numeric* result)  | 
     
       将两个numeric变量相乘并且把结果返回到第三个numeric变量。  | 
     
       该函数把变量var1和var2相乘。该操作的结果被存储在变量result中。成功时该函数返回0,出错时返回-1。  | 
    
| 
       int PGTYPESnumeric_div(numeric* var1, numeric* var2, numeric* result)  | 
     
       将两个numeric变量相除并且把结果返回到第三个numeric变量。  | 
     
       该函数用变量var2除变量var1。该操作的结果被存储在变量result中。成功时该函数返回0,出错时返回-1。  | 
    
| 
       int PGTYPESnumeric_cmp(numeric* var1, numeric* var2)  | 
     
       比较两个numeric变量。  | 
     
       
       该函数比较两个numeric变量。错误时会返回INT_MAX。成功时,该函数返回三种可能结果之一:
        
  | 
    
| 
       int PGTYPESnumeric_from_int(signed int int_val, numeric* var)  | 
     
       将一个整数变量转换成一个numeric变量。  | 
     
       该函数接受一个有符号整型变量并且把它存储在numeric变量var中。成功时返回0,失败时返回-1。  | 
    
| 
       int PGTYPESnumeric_from_long(signed long int long_val, numeric* var)  | 
     
       将一个长整型变量转换成一个numeric变量。  | 
     
       该函数接受一个有符号长整型变量并且把它存储在numeric变量var中。成功时返回0,失败时返回-1。  | 
    
| 
       int PGTYPESnumeric_copy(numeric* src, numeric* dst)  | 
     
       将一个numeric变量复制到另一个中。  | 
     
       该函数把src指向的变量的值复制到dst指向的变量。成功时该函数返回0,出错时返回-1。  | 
    
| 
       int PGTYPESnumeric_from_double(double d, numeric* dst)  | 
     
       将一个双精度类型的变量转换成一个numeric变量。  | 
     
       该函数接受一个双精度类型的变量并且把结果存储在dst指向的变量中。成功时该函数返回0,出错时返回-1。  | 
    
| 
       int PGTYPESnumeric_to_double(numeric* nv, double* dp)  | 
     
       将一个numeric类型的变量转换成双精度类型。  | 
     
       该函数将nv指向的变量中的numeric值转换成dp指向的双精度变量。成功时该函数返回0,出错时返回-1(包括溢出)。溢出时,全局变量errno将被额外地设置成PGTYPES_NUM_OVERFLOW。  | 
    
| 
       int PGTYPESnumeric_to_int(numeric* nv, int* ip)  | 
     
       将一个numeric类型的变量转换成整数类型。  | 
     
       该函数将nv指向的变量的numeric值转换成ip指向的整数变量。成功时该函数返回0,出错时返回-1(包括溢出)。溢出时,全局变量errno将被额外地设置成PGTYPES_NUM_OVERFLOW。  | 
    
| 
       int PGTYPESnumeric_to_long(numeric* nv, long* ip)  | 
     
       将一个numeric类型的变量转换成长整型类型。  | 
     
       该函数将nv指向的变量的numeric值转换成ip指向的长整型变量。成功时该函数返回0,出错时返回-1(包括溢出)。溢出时,全局变量errno将被额外地设置成PGTYPES_NUM_OVERFLOW。  | 
    
| 
       int PGTYPESnumeric_to_decimal(numeric* src, decimal* dst)  | 
     
       将一个numeric类型的变量转换成decimal类型。  | 
     
       该函数将src指向的变量的numeric值转换成dst指向的decimal变量。成功时该函数返回0,出错时返回-1(包括溢出)。溢出时,全局变量errno将被额外地设置成PGTYPES_NUM_OVERFLOW。  | 
    
| 
       int PGTYPESnumeric_from_decimal(decimal* src, numeric* dst)  | 
     
       将一个decimal类型的变量转换成numeric类型。  | 
     
       该函数将src指向的变量的decimal值转换成dst指向的numeric变量。成功时该函数返回0,出错时返回-1(包括溢出)。  | 
    
示例
请参见常用示例章节。