Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2582405
  • 博文数量: 323
  • 博客积分: 10211
  • 博客等级: 上将
  • 技术积分: 4934
  • 用 户 组: 普通用户
  • 注册时间: 2006-08-27 14:56
文章分类

全部博文(323)

文章存档

2012年(5)

2011年(3)

2010年(6)

2009年(140)

2008年(169)

分类: Oracle

2009-09-02 19:23:06

  上午收到用户的邮件说一个叫"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; 因为是测试环境直接删除这两条记录问题得以解决。
阅读(8836) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~