博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
开启otl的64位长整数支持
阅读量:4970 次
发布时间:2019-06-12

本文共 1105 字,大约阅读时间需要 3 分钟。

要开启OTL的64位长整数支持,必须先定义宏

1 #define OTL_BIGINT __int64 // VC++, Borland C++

或者

1 #define OTL_BIGINT long long // GNU C++

同时,因为OTL只是一个头文件,具体的64位长整数支持还得靠底层,对于底层驱动本身就支持64位长整数的情况,就不需要定义其他宏了,而对于那些底层驱动不支持64位长整数的情况,例如OCI版本小于11.2或是ODBC本身不支持64位整数,则需要额外定义宏

1 #if defined(__GNUC__) // GNU C++   2 #include 
3 #define OTL_BIGINT long long 4 #define OTL_STR_TO_BIGINT(str,n) \ 5 { \ 6 n=strtoll(str,0,10); \ 7 } 8 #define OTL_BIGINT_TO_STR(n,str) \ 9 { \ 10 sprintf(str,"%lld",n); \ 11 } 12 #endif

 或是(WINDOWS平台)

1 #define OTL_BIGINT  __int64   2 #define OTL_STR_TO_BIGINT(str,n) \   3 { \   4   n=_atoi64(str); \   5 }   6 #define OTL_BIGINT_TO_STR(n,str) \   7 { \   8   _i64toa(n,str,10); \   9 }  10

原理就是通过宏把64位长整数转换成字符串存储在数据库里,取的时候再把字符串转换成64位长整数

 

在LP64平台上使用64位的OCI时,可以考虑定义宏

1 #define OTL_ORA_MAP_BIGINT_TO_LONG

这个比定义宏OTL_STR_TO_BIGINT和OTL_BIGINT_TO_STR执行效率更好

 

总之,就一句话,要想开启OTL的64位长整数,则必须定义宏OTL_BIGINT,如果底层驱动是OCI11.2以前的版本或是ODBC本身不支持64位长整数(这个情况比较少见),则还需要定义宏OTL_STR_TO_BIGINT和OTL_BIGINT_TO_STR

 

参考资料:(要FQ才能打开,不知道为啥这个网站会被封掉)

转载于:https://www.cnblogs.com/fnlingnzb-learner/p/5903330.html

你可能感兴趣的文章
deque
查看>>
Setting up a Passive FTP Server in Windows Azure VM(ReplyCode: 227, Entering Passive Mode )
查看>>
c#中从string数组转换到int数组
查看>>
数据模型(LP32 ILP32 LP64 LLP64 ILP64 )
查看>>
java小技巧
查看>>
POJ 3204 Ikki's Story I - Road Reconstruction
查看>>
【BZOJ】2959: 长跑(lct+缩点)(暂时弃坑)
查看>>
iOS 加载图片选择imageNamed 方法还是 imageWithContentsOfFile?
查看>>
toad for oracle中文显示乱码
查看>>
SQL中Group By的使用
查看>>
错误org/aopalliance/intercept/MethodInterceptor解决方法
查看>>
两个表格中数据不用是一一对应关系--来筛选不同数据,或者相同数据
查看>>
Strict Standards: Only variables should be passed by reference
查看>>
hiho_offer收割18_题解报告_差第四题
查看>>
AngularJs表单验证
查看>>
静态方法是否属于线程安全
查看>>
02号团队-团队任务3:每日立会(2018-12-05)
查看>>
SQLite移植手记1
查看>>
js05-DOM对象二
查看>>
mariadb BINLOG_FORMAT = STATEMENT 异常
查看>>