为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:03134284368-20250430-272000-20149 Pack1
【操作系统】:
【CPU】:
【问题描述】*:
假设存在字段 dept_id varchar(32)
存在数值,1,1000,100000,2147483648
dept_his_id varchar(64) 存在大于2147483648的数值
exp_cast(dept_id) = 1000
exp_cast根据传入的数值1000,转换为 int ,
传入值 2147483648 , 转换为 bigint ;这块有参数可以控制吗?
目前存在问题语句(已脱敏)部分如下,dept_id 默认转换为 int 类型
START WITH
dept_id = 1000
AND emp_id IN ('112','3241')
CONNECT BY
PRIOR dept_id = dept_his_id
AND emp.id IN ('112',
'3241')
ORDER BY dept_flag
老版本(1-2-70-21.09.08-147080-10028-SEC)默认直接转换为 bigint , 新版本(03134284368-20250430-272000-20149 Pack1)如何处理?
这个问题使得在新版本执行SQL会报错 -6102: 数据溢出
做个试验,将 CMP_AS_DECIMAL 参数修改成2,然后重启实例后,再查询看看是否能正常
SP_SET_PARA_VALUE(2,'CMP_AS_DECIMAL',2);

修改dm.ini参数 CALC_AS_DECIMAL=3 试试