免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3005 | 回复: 5
打印 上一主题 下一主题

出错:ORA-20000: ORU-10028: line length overflow, limit of 255 bytes per line? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-11-01 09:44 |只看该作者 |倒序浏览
存储过程:
PROCEDURE AEPR_SPLITARGUMENT ( in_value         IN    sp_noma.parameter_str%TYPE,
                               out_value        OUT   ae_generalfuncsheet.argument%TYPE,
                               out_value_ext    OUT   ae_generalfuncsheet.argument_ext%TYPE
                             )
IS
v_temp                      VARCHAR(255);
v_pos                       SMALLINT;
v_len                       SMALLINT;
BEGIN
    v_len := LENGTHB(in_value);
    IF v_len > 254
    THEN
        v_temp := SUBSTRB(in_value,1,v_len/2);
        v_pos := INSTRB(v_temp,'|',-1,1);
        out_value := SUBSTRB(in_value,1,v_pos);
        if v_len - v_pos > 255
        then
            out_value_ext := SUBSTRB(in_value,v_pos +1,255); -- v_pos
        else
            out_value_ext := SUBSTRB(in_value,v_pos +1);
        end if;
    ELSE
        out_value := in_value;
        out_value_ext := NULL;
    END IF;

END;
参数信息:
sp_noma.parameter_str   VARCHAR2(500)
ae_generalfuncsheet.argument  VARCHAR2(255)
ae_generalfuncsheet.argument_ext  VARCHAR2(255)
例子:
输入参数值-login=330382766419542@wzgs|password=419542|homeid1=57700|homeid2=57703|taxno=330382766419542|namec=温州市瓯丽斯出口产品国际展贸中心有限公司雁荡山购物中心|idtype=200|idno=330382766419542|companytype=1300|contactname=苏立文|contactphone=1|contactaddress=不祥|contactpostcode=不祥|connectiontype=100|usertype=100|createt=2005-10-25|expirationtime=0|paymenttype=300|agenttaxno=330323725234015|agreementno=3302|paytaxtype=200|address=温州市瓯丽斯出口产品国际展贸中心有限公司雁荡山购物中心|.

执行后出错:ORA-20000: ORU-10028: line length overflow, limit of 255 bytes per line

测试:如果将out_value_ext := SUBSTRB(in_value,v_pos +1);改为
out_value_ext := SUBSTRB(in_value,1,240);可以,而且不同的oracle数据库240这个值变化,即有的可以是250.

不知什么原因?怎么解决?

论坛徽章:
0
2 [报告]
发表于 2005-11-01 09:46 |只看该作者
执行结果信息:
9:45:04  Starting execution of PL/SQL block...
out_value = login=330382766419542@wzgs|password=419542|homeid1=57700|homeid2=57703|taxno=330382766419542|namec=温州市瓯丽斯出口产品国际展贸中心有限公司雁荡山购物中心|idtype=200|idno=330382766419542|companytype=1300|contactname=苏立文|contactphone=1|
Error -20000: ORA-20000: ORU-10028: line length overflow, limit of 255 bytes per line
9:45:04  Execution failed: ORA-20000: ORU-10028: line length overflow, limit of 255 bytes per line
9:45:04  ORA-06512: at line 16
9:45:04  End Executing PL/SQL block

论坛徽章:
0
3 [报告]
发表于 2005-11-01 13:17 |只看该作者
我是用 SQL Navigator执行后输出东西

DECLARE
out_value VARCHAR2(255);
out_value_ext VARCHAR2(255);
BEGIN

-- Now call the stored program
  aepr_splitargument('login=330382766419542@wzgs|password=419542|homeid1=57700|homeid2=57703|taxno=330382766419542|namec=温州市瓯丽斯出口产品国际展贸中心有限公司雁荡山购物中心|idtype=200|idno=330382766419542|companytype=1300|contactname=苏立文|contactphone=1|contactaddress=不祥|contactpostcode=不祥|connectiontype=100|usertype=100|createt=2005-10-25|expirationtime=0|paymenttype=300|agenttaxno=330323725234015|agreementno=3302|paytaxtype=200|address=温州市瓯丽斯出口产品国际展贸中心有限公司雁荡山购物中心|',out_value,out_value_ext);

-- Output the results
dbms_output.put_line(SubStr('out_value = '||out_value,1,255));
dbms_output.put_line(SubStr('out_value_ext = '||out_value_ext,1,255));

EXCEPTION
WHEN OTHERS THEN
  dbms_output.put_line(SubStr('Error '||TO_CHAR(SQLCODE)||': '||SQLERRM, 1, 255));
RAISE;
END;

论坛徽章:
0
4 [报告]
发表于 2005-11-04 10:52 |只看该作者
没人响应啊

论坛徽章:
0
5 [报告]
发表于 2005-11-04 15:52 |只看该作者
SUBSTRB
改为
SUBSTR吧!

论坛徽章:
0
6 [报告]
发表于 2005-11-07 15:55 |只看该作者
因为字符串里有中文,所以所有的函数都用了b
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP