上午收到用户的邮件说一个叫"CVN_流式制造移库单生成"的请求完成时出错。日志如下:
CUXMOVEORDER module: CVN_流式制造移库单生成
+---------------------------------------------------------------------------+
当前的系统时间为 02-09-2009 08:46:51
+---------------------------------------------------------------------------+
**Starts**02-09-2009 08:46:52
FDPSTP 中出现 ORACLE 错误 1722
原因:由于 ORA-01722: 无效数字
ORA-06512: 在"APPS.CUX_FLOW_MOVE_ORDER", line 365
ORA-06512: 在line 1
, FDPSTP 失败。
出现错误时执行的 SQL 语句为: SELECT R.Conc_Login_Id, R.Reque
+---------------------------------------------------------------------------+
FND_FILE 中日志消息开始
+---------------------------------------------------------------------------+
create MO header :S
header_id: 367676
component_item_number: L99
p_row_num: 1
p_inventory_item_id: 269811
create MO line :S
mo_line created
component_item_number: LL
p_row_num: 2
p_inventory_item_id: 261811
create MO line :S
mo_line created
component_item_number: Q88
p_row_num: 3
p_inventory_item_id: 265812
create MO line :S
mo_line created
component_item_number: QQ
p_row_num: 4
p_inventory_item_id: 260811
create MO line :S
mo_line created
component_item_number: Z11
p_row_num: 5
p_inventory_item_id: 269813
create MO line :S
mo_line created
+---------------------------------------------------------------------------+
FND_FILE 中日志消息结束
+---------------------------------------------------------------------------+
+---------------------------------------------------------------------------+
正在执行请求完成选项...
已完成执行请求完成选项。
+---------------------------------------------------------------------------+
已完成并发请求
当前的系统时间为 02-09-2009 08:46:52
CUX_FLOW_MOVE_ORDER是一个客制化的package。按提示定位到365行发现是一个update语句:
update xxcux.cux_bom_std_quantity
set sch_number=(select mh.DESCRIPTION from apps.MTL_TXN_REQUEST_Headers_V mh where mh.REQUEST_NUMBER=v_header_id)
,move_number=v_header_id
where wip_enter_id=c_wip_entity_cur.wip_entity_id;
问题就出在这个语句上面。sch_number、v_header_id都是number类型。mh.DESCRIPTION、mh.REQUEST_NUMBER都是varchar2类型。mh.REQUEST_NUMBER=v_header_id这里存在一个隐式转换。MTL_TXN_REQUEST_Headers_V在这里是一个视图,通过它的定义发现REQUEST_NUMBER字段来自表MTL_TXN_REQUEST_HEADERS的REQUEST_NUMBER。查询这个表的记录发现REQUEST_NUMBER字段里有些诸如"QT","QW"这样的字段值。到这里问题就清楚了。oracle在对这些字段值做隐式转换的时候发生 ORA-01722:的错误。关于这点很容易去验证:SQL>select to_number('QS') from dual; 因为是测试环境直接删除这两条记录问题得以解决。
阅读(8879) | 评论(0) | 转发(0) |