修改之前的脚本

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')。

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

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

db2 存储过程参数传递--字段类型转换产生的问题的更多相关文章

  1. DB2 存储过程创建、系统表

    前段时间做了数据表拆分,进行数据迁移,用到一些SQL命令,语句记录下来 db2look是DB2用于生成数据库DDL语句的一个工具: 命令:db2look -d DBname -a -e -p -i u ...

  2. DB2读取CLOB字段-was报错:操作无效:已关闭 Lob。 ERRORCODE=-4470, SQLSTATE=null

    DB2读取CLOB字段-was报错:操作无效:已关闭 Lob. ERRORCODE=-4470, SQLSTATE=null 解决方法,在WAS中要用的数据源里面配置连个定制属性: progressi ...

  3. python dataframe astype 字段类型转换

    使用dtype查看dataframe字段类型 print df.dtypes 使用astype实现dataframe字段类型转换 # -*- coding: UTF-8 -*- import pand ...

  4. oracle 存储过程详细介绍(创建,删除存储过程,参数传递等)

    这篇文章主要介绍了oracle 创建,删除存储过程,参数传递,创建,删除存储函数,存储过程和函数的查看,包,系统包等相关资料,需要的朋友可以参考下   oracle 创建,删除存储过程,参数传递,创建 ...

  5. db2存储过程

    一. 使用存储过程的好处 1. 减少客户机与服务器之间的网络使用率,以及数据库锁定保持的时间 应用程序通常在执行每个SQL语句都要跨网络两次,存储过程可以将SQL语句集中在一起, 从而使得对于每一组S ...

  6. mysql中字段类型转换排序

    表中字段server_id是varchar类型,现在我们查询数据时想以server_id排一下序,排序后的结果 select server_id from cardserver where game_ ...

  7. DB2修改表字段

    1:删除字段非空属性 alter table XXX alter column XXX drop not null 此特性需要DB2 9.0以上的版本 2:添加字段非空属性alter table XX ...

  8. DB2存储过程语法规则

    如何声明一个存储过程CREATE PROCEDURE 存储过程名(IN 输入变量名 输入变量类型,OUT 输出变量名 输出变量类型)紧跟其后的是存储过程属性列表            常用的有:LAN ...

  9. linux命令行执行db2存储过程

    存储过程代码如下: CREATE PROCEDURE proc_sum2(IN n INT,OUT sum INT,OUT j INT) BEGIN DECLARE i INT; ; ; ; WHIL ...

随机推荐

  1. 【Arcgis for android】Error inflating class com.esri.android.map.MapView【已解决】

    解决方案:如果你是一个项目之前调试是好的,突然调试报这个错,听我的,直接卸载手机上调试的这个程序,重新调试,你会发现ok了 环境:arcgis android 10.2 错误:E/AndroidRun ...

  2. CentOS使用NTFS-3G加载NTFS硬盘

    CentOS使用NTFS-3G加载NTFS硬盘 CentOS 挂载NTFS格式硬盘时会报错unknown filesystem type 'ntfs',这时就需要用到第三方的插NTFS-3G来加载NT ...

  3. Data Base oracle简单使用及管理工具使用

    oracle简单使用及管理工具使用 一.常用工具: 1.sqldeveloper 2.navicat for oracle 3.PLSQL Developer 4.toad

  4. Django之博客系统:自定义模板标签

    Django提供了很多内置的模板标签比如{% if %}或者{% block %}Django也允许你创建自己的模板标签(template tags)来执行自定义的动作.当你需要在你的模板中添加功能而 ...

  5. 2019-RHCSA-红帽题库(稳定)

    RHCSA考题 Hostname:station.rhce.ccIP address:192.168.122.100Netmask:255.255.255.0Gateway:192.168.122.1 ...

  6. datetime问题

    DateUtil.format(DateTime.now(), DatePattern.NORM_DATE_PATTERN);. 此方法将现在时间转为yy--mm--dd格式   mysql中日期运算 ...

  7. 洛谷P4072 [SDOI2016]征途(斜率优化)

    传送门 推式子(快哭了……)$$s^2*m^2=\sum _{i=1}^m (x_i-\bar{x})^2$$ $$s^2*m^2=m*\sum _{i=1}^m x_i^2-2*sum_n\sum ...

  8. tomcat启动优化

    tomcat的最佳实践运行模式 Tomcat Connector三种运行模式(BIO, NIO, APR)的比较和优化. org.apache.coyote.http11.Http11Protocol ...

  9. php版 日文半角转全角

    工作需要,写的这个 /* *转载请注明 http://www.cnblogs.com/kclteam/p/5278923.html$str //参数可以是字符串或数组*/ function HkToF ...

  10. element,点击查看,实现tab切换:

    点击查看,实现tab切换: 代码如下: <template> <div> <el-table :data="tableData" style=&quo ...