当前位置: 代码迷 >> Informix >> informix 存储过程中数据类型有关问题,
  详细解决方案

informix 存储过程中数据类型有关问题,

热度:4078   发布时间:2013-02-26 00:00:00.0
informix 存储过程中数据类型问题,急。。。。
目的想实现的是从数据库中把数据取出来放到一个单元格中查出来,每条记录用","格开。
create procedure apply_pro(mname varchar(250))
returning char(1000);
define a,b varchar(250);
define i,j varchar(250);
define stype_num integer;
define mcreate_time,mlabel_cn,mapplycompy,stype_name varchar(250);
let a=',';
let i='';
let j='';
foreach select m.create_time,m.label_cn,m.applycompany,s.sysfilter_object_name,s.sysfilter_object_type into mcreate_time,mlabel_cn,mapplycompy,stype_name,stype_num from sysfilter_apply_sheet m,sysfilter_apply_sheet_sub s where s.related_sysfilte_cuid=m.cuid and m.label_cn=mname
let b=stype_name;
if stype_num=4 then
let i=i||b||a;
elif stype_num=9 then
let j=j||b||a;
end if
end foreach
return i;
end procedure;
Error: java.sql.SQLException: Resulting string length must be less than or equal to 255
如果把returning char(1000);改为returning varchar(250);但是查出来的字符一部分被截取,如下:因为变量i,j,为varchar最大为255,
如果把i,j变量设为char(500),查出结果为空。请大家帮忙给看一下,比较急,在线等。

如:2499-姚砦小区,1052-国安(加勒比海),2065-东区环五扩一,676-金水花园北,736-金水未来路口,723-东交易厅,724-天鹤,2344-经一纬二路口,728-经一路,686-泡桐研究所,2387-丰产路小学,727-红专小区,1089-梅苑宾馆,719-商 ,

------解决方案--------------------------------------------------------
在把i,j变量设为char(500)的情况下,试试以下修改:

let i=i||b||a; 改为 let i=trim(i)||b||a;
let j=j||b||a; 改为 let j=trim(j)||b||a;
  相关解决方案