要开启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位长整数支持的更多相关文章

  1. 64位平台支持大于2 GB大小的数组

    64位平台支持大于2 GB大小的数组 64位平台.NET Framework数组限制不能超过2GB大小.这种限制对于需要使用到大型矩阵和向量计算的工作人员来说,是一个非常大问题. 无论RAM容量有多大 ...

  2. NET Framework 4.5新特性 (三)64位平台支持大于2 GB大小的数组

    64位平台.NET Framework数组限制不能超过2GB大小.这种限制对于需要使用到大型矩阵和向量计算的工作人员来说,是一个非常大问题. 无论RAM容量有多大有多少,一旦你使用大型矩阵和向量计算工 ...

  3. 功能强大支持64位操作系统的转Flash软件(doc转swf):Print2Flash

    Print2Flash是一个虚拟打印机类的文档转换软件,因此只要是可打印的文档,都可以轻松转换为Flash文件,即SWF动画,特别是用于转换PDF.Word.Excel.PowerPoint等文档为S ...

  4. vbox下安装centos (全部都是基于64位)

    1.首先提示说CPU内核不匹配,如下图: 于是查阅资料得知:64位CPU支持32位和64位,而要用64位内核,就需要主板支持,于是修改BIOS,在ADVANCE(高级)里,找到VT(也就是virtua ...

  5. ios7适配一些问题以及64位32位

    ios7适配一些问题(http://www.cocoachina.com/ios/20130703/6526.html) 1.iOS应用如何实现64位的支持 http://www.codeceo.co ...

  6. WIN7 64位配置Oracle SQL Developer工具

    在使用Oracle SQL 的过程中,很多参考资料,辅导机构,各种书籍绝大多数都是使用PL/SQL进行讲解,但是问题是PL/SQL对WIN7 64位系统支持不好,网上有各种各样的配置教程,我尝试了很多 ...

  7. linux内核学习之三:linux中的"32位"与"64位"

    在通用PC领域,不论是windows还是linux界,我们都会经常听到"32位"与"64位"的说法,类似的还有"x86"与"x86 ...

  8. 【转】将 Linux 应用程序移植到 64 位系统上

    原文网址:http://www.ibm.com/developerworks/cn/linux/l-port64.html 随着 64 位体系结构的普及,针对 64 位系统准备好您的 Linux® 软 ...

  9. wxpython 32 位 ,python 64 位问题

    在安装Python Wxpython模块后,导入包的时候,会提示不支持64位的支持,需要安装Pythons 32 位,或者强制,使用Python 32 模式运行即可 在终端输入: defaults w ...

随机推荐

  1. 高仿360界面的实现(用纯XML和脚本实现)

    源码下载:360UI 本项目XML的桌面渲染依赖GQT开源项目(请感兴趣的朋友加入QQ讨论群:101189702,在群共享文件里下载GQT源码),以下是360界面实现的全部XML代码,所有的代码都在3 ...

  2. CSS 显示或隐藏子元素

    很多时候我们仅仅只是想让鼠标移动入某个元素,然后显示出某个元素. 大多数博客的标题或内容都是:使用CSS实现鼠标悬停在一行上,显示某些元素 很遗憾,这是错误的,鼠标悬停后,尽管CSS标准中有定义此种方 ...

  3. python io 模块之 open() 方法(好久没写博客了)

    io.open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True),打开file ...

  4. Linux内核中断处理机制

    <什么是中断> 计算停下当前处理任务,并保存现场,转而去处理其他是任务,当完成任务后再回到原来的任务中去. <中断的分类> a:软中断     软中断时执行中断指令产生的,软中 ...

  5. Django-高级特性

    分页 1.固定显示分页数目 2.点击相应分页取出对应数据 具体实现: from django.utils.safestring import mark_safe class Pagination(ob ...

  6. 【BZOJ 4558】 4558: [JLoi2016]方 (计数、容斥原理)

    未经博主同意不能转载 4558: [JLoi2016]方 Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 362  Solved: 162 Descri ...

  7. ubuntu18.04 安装Navicat 解决字体方框问题

    前景 最近带着看一点数据库的知识,装一下navicat,就是这个玩意儿,在我编码毫无问题的情况下,这个软件上却显示各种乱码 环境 ubuntu 18.04 navicat 12(最新版) mysql ...

  8. 排序算法之冒泡排序Java实现

    排序算法之冒泡排序 舞蹈演示排序: 冒泡排序: http://t.cn/hrf58M 希尔排序:http://t.cn/hrosvb  选择排序:http://t.cn/hros6e  插入排序:ht ...

  9. 【数论】【扩展欧几里得】Codeforces Round #484 (Div. 2) E. Billiard

    题意:给你一个台球桌面,一个台球的初始位置和初始速度方向(只可能平行坐标轴或者与坐标轴成45度角),问你能否滚进桌子四个角落的洞里,如果能,滚进的是哪个洞. 如果速度方向平行坐标轴,只需分类讨论,看它 ...

  10. 自顶向下学搜索引擎——北大天网搜索引擎TSE分析及完全注释[1]寻找搜索引擎入口

    转自:http://blog.csdn.net/jrckkyy/article/category/402818 由于百度博客http://hi.baidu.com/jrckkyy发表文章字数有限,以后 ...