修改之前的脚本

select count(*)
from dbdk.dtdkg010 A
left join DBDK.DTDKG070 D ON D.PAY_NO = A.PAY_NO
LEFT JOIN CXLFM.DTFMA000_UNIT F ON F.DIV_NO = D.PLN_DIV1 AND F.DIV_NO2=D.PLN_DIV2
LEFT JOIN DBDK.DTDKH900 E ON E.COST_CD = D.COST_CD
LEFT JOIN DBDK.DTDKG071 G ON D.PAY_NO=G.PAY_NO AND D.SER_NO=G.SER_NO
LEFT JOIN CXLCM.DTCM0011 H ON H.TABLE_CODE='DBDK.DTDKG071' AND H.COL_CODE='ACC_TPYE' AND H.OPTION=G.ACC_TPYE
WHERE ((left(replace(VARCHAR(A.APY_DT),'-',''),6)=in_month AND A.PAY_KD IN('','','','','','','','','A','B','C','D','E','X') ))
AND A.PCS_STS=''
AND value(A.TRD_UNION_ACT,'') <> '';

修改之后的脚本

select count(*)
from dbdk.dtdkg010 A
left join DBDK.DTDKG070 D ON D.PAY_NO = A.PAY_NO
LEFT JOIN CXLFM.DTFMA000_UNIT F ON F.DIV_NO = D.PLN_DIV1 AND F.DIV_NO2=D.PLN_DIV2
LEFT JOIN DBDK.DTDKH900 E ON E.COST_CD = D.COST_CD
LEFT JOIN DBDK.DTDKG071 G ON D.PAY_NO=G.PAY_NO AND D.SER_NO=G.SER_NO
LEFT JOIN CXLCM.DTCM0011 H ON H.TABLE_CODE='DBDK.DTDKG071' AND H.COL_CODE='ACC_TPYE' AND H.OPTION=G.ACC_TPYE
WHERE to_char(A.APY_DT,'yyyymm')=in_month AND A.PAY_KD IN('','','','','','','','','A','B','C','D','E','X')
AND A.PCS_STS=''
AND value(A.TRD_UNION_ACT,'') <> '';

传入的参数是 in_month : 201807 这样

查找这个问题的时候,首先上来就是直接替换参数在 dbvi 的命令行执行

select count(*)
from dbdk.dtdkg010 A
left join DBDK.DTDKG070 D ON D.PAY_NO = A.PAY_NO
LEFT JOIN CXLFM.DTFMA000_UNIT F ON F.DIV_NO = D.PLN_DIV1 AND F.DIV_NO2=D.PLN_DIV2
LEFT JOIN DBDK.DTDKH900 E ON E.COST_CD = D.COST_CD
LEFT JOIN DBDK.DTDKG071 G ON D.PAY_NO=G.PAY_NO AND D.SER_NO=G.SER_NO
LEFT JOIN CXLCM.DTCM0011 H ON H.TABLE_CODE='DBDK.DTDKG071' AND H.COL_CODE='ACC_TPYE' AND H.OPTION=G.ACC_TPYE
WHERE ((left(replace(VARCHAR(A.APY_DT),'-',''),6)=''AND A.PAY_KD IN('','','','','','','','','A','B','C','D','E','X') ))
AND A.PCS_STS=''
AND value(A.TRD_UNION_ACT,'') <> '';

此时可以返回正确的结果。

这个时候就开始纳闷儿了,第一个想到的是参数没有传递进去,或者参数的数据类型不对?

在脚本中写入日志表,查看将参数写入日志表,没有问题呀?

第二个想到的是,难道存储过程中执行SQL与命令行中有差异?

  DB2的资料本身不多,搜索了好一阵之后,并没有发现,有这个方面的问题,请教了一下同事,也没有遇到类似的问题。

后来转念一想,是不是有可能字段类型转换的时候出问题了?

后来验证了一下,确实是 (left(replace(VARCHAR(A.APY_DT),'-',''),6) 在做类型转换的时候会有差异。

后来证实是根据链接环境的不同转换后的格式会有差异。

解决方案是 给定一个固定的转换格式 to_char(A.APY_DT,'yyyymm')。

问题总算解决了,现在想来,主要是解决问题的思路,和快速反馈,从而快速的定位问题所在。

面对压力的时候,少些抱怨,多集中精力在解决问题的思考上,这样才能比较快的找到问题。

最新文章

  1. 转!!windows记事本保存“联通” 编码问题
  2. WNDR3700V4恢复原厂固件(使用TFTP刷网件原厂固件)
  3. Hadoop1.2.1 全集群3节点安装-rpm安装
  4. Java类加载器深入探索
  5. 剑指Offer:面试题18——树的子结构(java实现)
  6. hdu 1754 线段树模板题
  7. Memcache入门知识
  8. Jmeter代理服务器设置
  9. 蚂蚁通讯框架SOFABolt之私有通讯协议设计
  10. 使用jQuery重置(reset)表单的方法
  11. javascript History对象属性和方法
  12. TerraGate软件安装后,不能启动的解决办法
  13. WebLogic初学笔记
  14. C# CheckBox与RadioButton
  15. Tomcat环境变量配置命令行报错:The JRE_HOME environment variable is not defined correctl This environment variable is needed to run this program
  16. 【Python】打印object对象
  17. npm使用入门(package.json)
  18. StringUtils.isEmpty和StringUtils.isBlank的区别
  19. HostFileChangeMonitor
  20. 第二篇:zone(区域)

热门文章

  1. 常用Git命令清单
  2. C#内存映射大文件并使用Marshal解析结构体信息
  3. SQLite 如何清空表数据并将递增量归零
  4. JavaScript面向对象编程入门
  5. Binder学习笔记(十二)—— binder_transaction(...)都干了什么?
  6. ubuntu - 14.04,必须会的技能-安装PPA源中的程序,更大范围使用deb格式安装文件!!
  7. (multi)set的某些操作
  8. Python和FTP
  9. Cannot find module &#39;webpack/bin/config-yargs&#39;
  10. ubuntu不能自windows拖拽文件解决办法