最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

oracle number 16位,loopback

运维笔记admin19浏览0评论

oracle number 16位,loopback

oracle number 16位,loopback

历史遗留问题,oracle表中主键Number类型,有13,14,15,16位长度主键,用loopback查询,如果主键16位长度的,查询不到数据。纠结了几天,修改以下代码解决了。粗暴的决绝方法

/**

* Execute the SQL statement.

* 查询数据

* @param {String} sql The SQL statement.

* @param {String[]} params The parameter values for the SQL statement.

* @param {Function} [callback] The callback after the SQL statement is executed.

*/

Oracle.prototype.executeSQL = function(sql, params, options, callback) {

var self = this;

//因为科技项目主键ID有13,14,15,16位的情况,在数据库主键Number存放16位数组的情况下,导致查不出数据,

//故判断参数类型是否为number类型,且长度大于15的,把参数强转转换为string类型,进行查询

//初略查看了oracle写的c++驱动代码,猜测是oracle c++参数类型为number时溢出导

//详情查看 njsConnection.cpp类的 1624行代码 NJS_VALUETYPE_NUMBER 附近,c++不懂,所以改这里。

if(params){

for(var i = 0 ; i < params.length; i++ ){

var temp = params[i];

if(typeof temp === 'number' && temp.toString().length >= 15){

params[i] = temp.toString();

}

}

}

//其他代码

}

主要是查询是,判断参数是否为number类型长度是否长于15位,如果是,强制转位string类型。即可解决。

愿君安好。

发布评论

评论列表(0)

  1. 暂无评论