select中报错ORA-01401: inserted value too large for column,求帮忙

lionjian 2012-10-26 05:39:30
存储过程报错,ORA-01401: inserted value too large for column
问题是我存储过程是查询数据,不是insert的语句而是select语句报错,
存储过程如下
CREATE OR REPLACE PROCEDURE SP_BE_EX_ORDER_LIST_SEARCH(
P_CURRENT_EXPO_ID NVARCHAR2 DEFAULT '%',
P_ORDER_ID NVARCHAR2 DEFAULT '%',
CS OUT SYS_REFCURSOR
)
IS

BEGIN

OPEN CS FOR SELECT
A.ORDER_ID,
A.ORDER_NUMBER,
A.CREATE_TIME,
A.IS_DEBT,
A.ORDER_STATUS,
A.AGENT_ID,
A.AGENT_COMPANY_NAME,
F.EXPO_AREA_CNNAME,
A.SPACE_QUANTITY,
A.SPACE_AREA,
A.MAIN_CNPRODUCTS,
A.MAIN_ENPRODUCTS,
A.PRODUCT_CNBRAND,
A.PRODUCT_ENBRAND,
A.REMARKS,
H.APPLY_PEOPLE_NAME,
H.DISPLAY_NAME_CN,
H.DISPLAY_NAME_EN,
H.MOBILE,
H.PHONE,
H.EMAIL,
H.FAX,
H.COMPANY_CNNAME,
H.COMPANY_ENNAME,
H.IS_OVERSEAS,
B.COUNTRY_CNNAME AS COUNTRY,
G.CITY_NAME AS PROVINCE,
I.CITY_NAME AS CITY,
J.CITY_NAME AS AREA,
H.CN_ADDRESS,
H.EN_ADDRESS,
H.POST_CODE,
H.ID_CARD,
C.COMPANY_NAME,
A.RE_USE_NAME,
A.RE_USE_TIME,
FN_GETSPACE_NUMBER_BY_ORDER(A.CURRENT_EXPO_ID,A.ORDER_ID) AS EXPO_SPACE_NUMBERS,
SUM(E.INLAND_FINAL_PRICE) AS SUMPRICE,
SUM(E.OVERSEA_FINAL_P_USD) AS SUMPRICE_USD,
SUM(E.OVERSEA_FINAL_P_EUR) AS SUMPRICE_EUR,
A.DISCOUNT_RATE,
SUM(E.INLAND_FINAL_PRICE)*A.DISCOUNT_RATE AS DISCOUNT_PRICE,
SUM(E.OVERSEA_FINAL_P_USD)*A.DISCOUNT_RATE AS DISCOUNT_PRICE_USD,
SUM(E.OVERSEA_FINAL_P_EUR)*A.DISCOUNT_RATE AS DISCOUNT_PRICE_EUR
FROM
BE_EX_ORDER A
LEFT JOIN BE_EX_AGENT C ON A.AGENT_ID=C.COMPANY_ID
LEFT JOIN BE_EX_ORDER_SPACE_D D ON A.ORDER_ID=D.ORDER_ID
LEFT JOIN BE_EX_EXPO_SPACE E ON D.EXPO_SPACE_ID=E.EXPO_SPACE_ID
LEFT JOIN BE_EX_EXPO_AREA F ON A.EXPO_AREA_ID=F.EXPO_AREA_ID
LEFT JOIN BE_EX_ORDER_HISTORY H ON A.ORDER_ID=H.ORDER_ID
LEFT JOIN BE_SYS_COUNTRY B ON H.COUNTRY=B.COUNTRYID
LEFT JOIN BE_SYS_CITY G ON H.PROVINCE=G.CITY_CODE
LEFT JOIN BE_SYS_CITY I ON H.CITY=I.CITY_CODE
LEFT JOIN BE_SYS_CITY J ON H.AREA=J.CITY_CODE
WHERE
to_char(nvl(A.CURRENT_EXPO_ID,' ')) like '%'||to_char(P_CURRENT_EXPO_ID)||'%'
AND 1=1
AND to_char(nvl(A.ORDER_ID,' ')) like '%'||to_char(P_ORDER_ID)||'%'
GROUP BY
A.ORDER_ID,
A.ORDER_NUMBER,
A.CREATE_TIME,
A.IS_DEBT,
A.AGENT_ID,
A.AGENT_COMPANY_NAME,
A.ORDER_STATUS,
F.EXPO_AREA_CNNAME,
A.SPACE_QUANTITY,
A.SPACE_AREA,
A.MAIN_CNPRODUCTS,
A.MAIN_ENPRODUCTS,
A.PRODUCT_CNBRAND,
A.PRODUCT_ENBRAND,
A.REMARKS,
H.APPLY_PEOPLE_NAME,
H.DISPLAY_NAME_CN,
H.DISPLAY_NAME_EN,
H.MOBILE,
H.PHONE,
H.EMAIL,
H.FAX,
H.COMPANY_CNNAME,
H.COMPANY_ENNAME,
H.IS_OVERSEAS,
B.COUNTRY_CNNAME,
G.CITY_NAME,
I.CITY_NAME,
J.CITY_NAME,
H.CN_ADDRESS,
H.EN_ADDRESS,
H.POST_CODE,
H.ID_CARD,
C.COMPANY_NAME,
A.RE_USE_NAME,
A.RE_USE_TIME,
A.DISCOUNT_RATE,
A.CURRENT_EXPO_ID
;
END SP_BE_EX_ORDER_LIST_SEARCH;
当使用1次后,就会报错,但是在where中加个1=1的条件,就会正常,然后使用1次后又报错,再加多一个1=1又正常。。。。。
求高手帮忙啊,完全不明白怎么搞
...全文
540 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
lionjian 2012-10-29
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

FN_GETSPACE_NUMBER_BY_ORDER这个函数里面会不会有问题?
[/Quote]
存储过程是可以用的,就是用着用着就会报ORA-01401: inserted value too large for column错,那函数应该是没问题的
lionjian 2012-10-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

怎么加上的1=1 没太明白
[/Quote]
就是这存储过程可以用,但有时会报错ORA-01401: inserted value too large for column,然后在where里面加个1=1就可以正常用一段时间。。。。。所以不明白什么问题,求救啊。。。。
fw0124 2012-10-27
  • 打赏
  • 举报
回复
FN_GETSPACE_NUMBER_BY_ORDER这个函数里面会不会有问题?
陈字文 2012-10-27
  • 打赏
  • 举报
回复
怎么加上的1=1 没太明白

17,090

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧