免费注册 查看新帖 |

Chinaunix

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

关于SUBSTR的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-05-27 23:40 |只看该作者 |倒序浏览
DECLARE
  V_SRC NVARCHAR2(200);
  FINX NUMBER;
  FLEN NUMBER;
  MINX NUMBER;
  OAN NVARCHAR2(32);
  ECD NVARCHAR2(12);
  DLH NVARCHAR2(32);
BEGIN
    V_SRC:='这是用户名啊ABCDEFG|HHHHH|123456';
    FINX:=instr(V_SRC,'|');
    MINX:=INSTR(V_SRC,'|',FINX+1);
    EINX:=INSTR(V_SRC,'|',MINX+1);
    DBMS_OUTPUT.PUT_LINE(SLEN||','||FINX||','||MINX||','||EINX);

  OAN:=SUBSTR(V_SRC,0,FINX-1);
  DBMS_OUTPUT.PUT_LINE(OAN);

  ECD:=SUBSTR(V_SRC,FINX+1,MINX-1);
  DBMS_OUTPUT.PUT_LINE(ECD);

  DLH:=SUBSTR(V_SRC,EINX+1,EINX-1);
  DBMS_OUTPUT.PUT_LINE(DLH);
END;

运行提示
ORA-06502: PL/SQL: 数字或值错误 :  字符串缓冲区太小
ORA-06512: 在 line 29
06502. 00000 -  "PL/SQL: numeric or value error%s"
*Cause:   
*Action:

哪里错了?还望各位大师指点一下!谢谢

论坛徽章:
0
2 [报告]
发表于 2010-05-28 08:29 |只看该作者
OAN:=SUBSTR(V_SRC,0,FINX-1);
  

  ECD:=SUBSTR(V_SRC,FINX+1,MINX-1);


  DLH:=SUBSTR(V_SRC,EINX+1,EINX-1);

这3句里有出错,赋值的时候发现长度不够

PL/SQL里字符串是从1开始的,不是C里面的0

论坛徽章:
59
2015七夕节徽章
日期:2015-08-24 11:17:25ChinaUnix专家徽章
日期:2015-07-20 09:19:30每周论坛发贴之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38荣誉版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年纪念徽章
日期:2015-07-20 11:05:27IT运维版块每日发帖之星
日期:2015-07-20 11:05:34操作系统版块每日发帖之星
日期:2015-07-20 11:05:36程序设计版块每日发帖之星
日期:2015-07-20 11:05:40数据库技术版块每日发帖之星
日期:2015-07-20 11:05:432015年辞旧岁徽章
日期:2015-07-20 11:05:44
3 [报告]
发表于 2010-05-28 08:38 |只看该作者
是啊。所以做各个语言多看看文档有好处。

论坛徽章:
0
4 [报告]
发表于 2010-05-28 17:22 |只看该作者
跟着学习了~
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP