Oracle   发布时间:2022-05-17  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了loopback-connector-oracle 主键Number类型长度为16位以上查询不到数据解决方法大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

历史遗留问题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类型。即可解决。

愿君安好。

大佬总结

以上是大佬教程为你收集整理的loopback-connector-oracle 主键Number类型长度为16位以上查询不到数据解决方法全部内容,希望文章能够帮你解决loopback-connector-oracle 主键Number类型长度为16位以上查询不到数据解决方法所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:1415