开启otl的64位长整数支持
要开启OTL的64位长整数支持,必须先定义宏
#define OTL_BIGINT __int64 // VC++, Borland C++
或者
#define OTL_BIGINT long long // GNU C++
同时,因为OTL只是一个头文件,具体的64位长整数支持还得靠底层,对于底层驱动本身就支持64位长整数的情况,就不需要定义其他宏了,而对于那些底层驱动不支持64位长整数的情况,例如OCI版本小于11.2或是ODBC本身不支持64位整数,则需要额外定义宏
#if defined(__GNUC__) // GNU C++
#include <stdlib.h>
#define OTL_BIGINT long long
#define OTL_STR_TO_BIGINT(str,n) \
{ \
n=strtoll(str,,); \
}
#define OTL_BIGINT_TO_STR(n,str) \
{ \
sprintf(str,"%lld",n); \
}
#endif
或是(WINDOWS平台)
#define OTL_BIGINT __int64
#define OTL_STR_TO_BIGINT(str,n) \
{ \
n=_atoi64(str); \
}
#define OTL_BIGINT_TO_STR(n,str) \
{ \
_i64toa(n,str,); \
}
原理就是通过宏把64位长整数转换成字符串存储在数据库里,取的时候再把字符串转换成64位长整数
在LP64平台上使用64位的OCI时,可以考虑定义宏
#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
参考资料:http://otl.sourceforge.net/otl3_compile.htm(要翻墙才能打开,不知道为啥这个网站会被封掉)
开启otl的64位长整数支持的更多相关文章
- 64位平台支持大于2 GB大小的数组
		
64位平台支持大于2 GB大小的数组 64位平台.NET Framework数组限制不能超过2GB大小.这种限制对于需要使用到大型矩阵和向量计算的工作人员来说,是一个非常大问题. 无论RAM容量有多大 ...
 - NET Framework 4.5新特性 (三)64位平台支持大于2 GB大小的数组
		
64位平台.NET Framework数组限制不能超过2GB大小.这种限制对于需要使用到大型矩阵和向量计算的工作人员来说,是一个非常大问题. 无论RAM容量有多大有多少,一旦你使用大型矩阵和向量计算工 ...
 - 功能强大支持64位操作系统的转Flash软件(doc转swf):Print2Flash
		
Print2Flash是一个虚拟打印机类的文档转换软件,因此只要是可打印的文档,都可以轻松转换为Flash文件,即SWF动画,特别是用于转换PDF.Word.Excel.PowerPoint等文档为S ...
 - vbox下安装centos (全部都是基于64位)
		
1.首先提示说CPU内核不匹配,如下图: 于是查阅资料得知:64位CPU支持32位和64位,而要用64位内核,就需要主板支持,于是修改BIOS,在ADVANCE(高级)里,找到VT(也就是virtua ...
 - ios7适配一些问题以及64位32位
		
ios7适配一些问题(http://www.cocoachina.com/ios/20130703/6526.html) 1.iOS应用如何实现64位的支持 http://www.codeceo.co ...
 - WIN7 64位配置Oracle SQL Developer工具
		
在使用Oracle SQL 的过程中,很多参考资料,辅导机构,各种书籍绝大多数都是使用PL/SQL进行讲解,但是问题是PL/SQL对WIN7 64位系统支持不好,网上有各种各样的配置教程,我尝试了很多 ...
 - linux内核学习之三:linux中的"32位"与"64位"
		
在通用PC领域,不论是windows还是linux界,我们都会经常听到"32位"与"64位"的说法,类似的还有"x86"与"x86 ...
 - 【转】将 Linux 应用程序移植到 64 位系统上
		
原文网址:http://www.ibm.com/developerworks/cn/linux/l-port64.html 随着 64 位体系结构的普及,针对 64 位系统准备好您的 Linux® 软 ...
 - wxpython 32 位 ,python 64 位问题
		
在安装Python Wxpython模块后,导入包的时候,会提示不支持64位的支持,需要安装Pythons 32 位,或者强制,使用Python 32 模式运行即可 在终端输入: defaults w ...
 
随机推荐
- python opencv入门-形态学转换
			
目标: 学习不同的形态操作 例如 腐蚀.膨胀.开运算.闭运算 等. 我们要学习的函数有 cv2.erode(),cv2.dilate(),cv2.morphologyEx() 等. 原理 :一般对二值 ...
 - synchronized锁优化
			
1.自旋锁和自适应自旋锁 sync在JDK1.6之前之所以被称为重量级锁,是因为对于互斥同步的性能来说,影响最大的就是阻塞的实现.挂起线程与恢复线程的操作都需要转入内核态中完成.从用户态转入内核态是比 ...
 - 1015 Reversible Primes (20)(20 point(s))
			
problem A reversible prime in any number system is a prime whose "reverse" in that number ...
 - C# 非模式窗体show()和模式窗体showdialog()的区别
			
对话框不是模式就是无模式的.模式对话框,在可以继续操作应用程序的其他部分之前,必须被关闭(隐藏或卸载).例如,如果一个对话框,在可以切换到其它窗 体或对话框之前要求先单击"确定"或 ...
 - Django-高级特性
			
分页 1.固定显示分页数目 2.点击相应分页取出对应数据 具体实现: from django.utils.safestring import mark_safe class Pagination(ob ...
 - php开启redis扩展
			
1.安装redis git下载地址https://github.com/MSOpenTech/redis/releases 2.测试redis windows 运行(快捷键:windows键+R键), ...
 - Codeforces Round #357 (Div. 2) D. Gifts by the List 水题
			
D. Gifts by the List 题目连接: http://www.codeforces.com/contest/681/problem/D Description Sasha lives i ...
 - hdoj 4450 Draw Something 水题
			
Draw Something Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tota ...
 - vue2.0使用记录
			
父组件给子组件传值[props] 1.首先在父组件的script标签中引入子组件 import Children from './Children' 2.在template内引入子组件 <Chi ...
 - HTML5学习笔记3
			
7.文档元素 文档元素的主要作用是划分各个不同的内容,让整个页面布局清晰明快,让整个布局具有语义,进一步替代div.基本上没有什么实际作用效果,主要目的是在页面布局时区分各个主题和概念. h1~h6 ...