DEP导入字段后自动生成字段名超出oracle长度报错处理方法
金蝶云社区-yangyang0283
yangyang0283
0人赞赏了该文章 1,409次浏览 未经作者许可,禁止转载编辑于2014年04月30日 10:04:33

问题描述:
DEP导入字段后自动生成字段名超出oracle字段长度
原因分析:
1. 如果使用动态扩展平台对应的功能点(如领料出库单)业务数据源对应的功能点(如领料出库单查询)数据源字段导入(导入的字段名称自动生成一串长度为36,且是由数字与英文组成的字符串,如52242895-7ACD-4C45-BA26-6601A6107D13)不改,作为过滤条件选择的条件列,则对应的功能点查询会报错,且终止程序的执行,如下所示


2.在客户端的clinent目录下的log4j.log文件中找到以上程序报错执行sql语句,以下列某个功能点执行报错部分sql内容,如下所示:
SELECT "MATERIALREQBILLQUERY"."ID" "id", "MATERIALREQBILLQUERY"."NUMBER" "number", "MATERIALREQBILLQUERY"."BASESTATUS" "baseStatus", "MATERIALREQBILLQUERY"."BIZDATE" "bizDate", "MATERIALREQBILLQUERY"."STORAGEORGUNIT.ID" "storageOrgUnit.id", "MATERIALREQBILLQUERY"."STORAGEORGUNIT.NAME" "storageOrgUnit.name", "MATERIALREQBILLQUERY"."ADMINORGUNIT.ID" "adminOrgUnit.id", "MATERIALREQBILLQUERY"."ADMINORGUNIT.NAME" "adminOrgUnit.name", "MATERIALREQBILLQUERY"."COSTCENTERORGUNIT.ID" "costCenterOrgUnit.id", ……
"ENTRY".CFMlsno10 "ENTRY.MLSNO10", "ENTRY".FSourceBillNumber "52242895-7ACD-4C45-BA26-6601A6107D13", "ENTRY".FSourceBillEntrySeq "ENTRY.SOURCEBILLENTRYSEQ", "MATERIALREQBILL".FBaseStatus "7993A6FD-1604-4F99-A969-2CE6E656B4CE", "ADMINORGUNIT1".FName_l2 "ADMINORGUNIT1.NAME" FROM T_IM_MaterialReqBill "MATERIALREQBILL" LEFT OUTER JOIN T_ORG_Admin "ADMINORGUNIT" ON "MATERIALREQBILL".FAdminOrgUnitID = "ADMINORGUNIT".FID LEFT OUTER JOIN T_ORG_Storage "STORAGEORGUNIT" ON "MATERIALREQBILL".FStorageOrgUnitID = "STORAGEORGUNIT".FID LEFT OUTER JOIN T_IM_MaterialReqBillEntry "ENTRY" ON "MATERIALREQBILL".FID = "ENTRY".FParentID
……………………….
Caused exception message is: ORA-00972: identifier is too long
从上面的sql语句中发现"52242895-7ACD-4C45-BA26-6601A6107D13"与"7993A6FD-1604-4F99-A969-2CE6E656B4CE"作为了字段的别名,长度都是36,超出了oracle字段别名的长度30,从而执行以上的sql会报ORA-00972: identifier is too long错误,导致程序执行中断。
解决方法:
登录EAS系统,进入到 “动态扩展平台对应的功能点(如领料出库单)业务数据源对应的功能点(如领料出库单查询)数据源字段导入” 将这个功能点导入的字段名称进行减少,减少到30个字符之内。

23.jpg(58.81KB)