当前位置: 代码迷 >> PB >> pb11.5或pb12.5中sql语句的奇怪有关问题
  详细解决方案

pb11.5或pb12.5中sql语句的奇怪有关问题

热度:445   发布时间:2016-04-29 05:23:42.0
pb11.5或pb12.5中sql语句的奇怪问题?
我的系统:xp-sp3、sqlserver2008、pb11.5 或pb12.5,通过odbc连接数据库。
 我在做一个单据的自动增加时遇到了一个郁闷、奇怪的现象,不知道是什么原因,请求各位大侠救助。
order_no 单据号格式为年+月+日+2位流水号,比如14年11月04日 + 01即:14110401
我把'14110401%'存到一个字符串变量order_no_t中
保存成功后,在添加第二张单据时,单据号不能自动增加。经过调试跟踪发现是:
select max(order_no) into  :order_no_max from t_order where order_no like :order_no_t;
这个语句执行后order_no_max = null而不是想要的'14110401’
而我直接用'14110401%'代替变量order_no_t 时结果却是正确的'14110401‘即
select max(order_no) into  :order_no_max from t_order where order_no like ‘14110411%’
我还以为是pb115的版本出来问题,然后我升级到pb12,5问题还是一样的。请问高手们到底是什么原因造成的这样奇怪的结果?




------解决思路----------------------
不要在代码中直接写SQL去查询。把SQL转化为dw,去retrieve出来,再处理。
------解决思路----------------------
select 前检查一下 order_no_t的值,是否'11041101%'  ,应该不会有这bug
另外再检查一下sqlca.sqlcode
------解决思路----------------------
引用:
我的系统:xp-sp3、sqlserver2008、pb11.5 或pb12.5,通过odbc连接数据库。
 我在做一个单据的自动增加时遇到了一个郁闷、奇怪的现象,不知道是什么原因,请求各位大侠救助。
order_no 单据号格式为年+月+日+2位流水号,比如14年11月04日 + 01即:14110401
我把'14110401%'存到一个字符串变量order_no_t中
保存成功后,在添加第二张单据时,单据号不能自动增加。经过调试跟踪发现是:
select max(order_no) into  :order_no_max from t_order where order_no like :order_no_t;
这个语句执行后order_no_max = null而不是想要的'14110401’
而我直接用'14110401%'代替变量order_no_t 时结果却是正确的'14110401‘即
select max(order_no) into  :order_no_max from t_order where order_no like ‘14110411%’
我还以为是pb115的版本出来问题,然后我升级到pb12,5问题还是一样的。请问高手们到底是什么原因造成的这样奇怪的结果?


应该是你那个地方弄错了,建议你仔细检查,把order_no_t换成ls_no,值为1411%试试
------解决思路----------------------
是不是%出现我问题呢。你可以先试一下order_no_t = ‘14110401’ ,再order_no_t = order_no_t + '%',再select max(order_no)等等。
------解决思路----------------------
用'14110401%'代替变量order_no_t    order_no like ‘14110411%’好像这两个不一样
------解决思路----------------------
谨慎的怀疑你SQL执行之前order_no_t参数值不对或者是null
  相关解决方案