DB2存储过程

自己写了一个存储过程,如下所示:  select s.currentindex,         s.updatetime,         substr(s.seqrule, 1, locate('[',s.seqrule,1)-1) as prefix,         ...显示全部

自己写了一个存储过程,如下所示:

  select s.currentindex,

         s.updatetime,

         substr(s.seqrule, 1, locate('[',s.seqrule,1)-1) as prefix,

         substr(s.seqrule,

                locate( '[',s.seqrule,1) + 1,

                locate( ']',s.seqrule,1) - (locate( '[',s.seqrule,1) + 1)) as datemodel,

         length(substr(s.seqrule,

                       locate( '{',s.seqrule,1) + 1,

                       locate( '}',s.seqrule,1) - (locate( '{',s.seqrule,1) + 1))) as seqlen,

         substr(s.seqrule, locate( '}',s.seqrule,1) + 1, length(s.seqrule)) as suffix

    from sys_sequence s

   where s.objectname = 'PA_CHANNEL';

但在执行上述存储过程时,DB2数据库报了一个错: SQL0138N  内置字符串函数的数字自变量超出了范围。  SQLSTATE=22011,是不是substr函数与locate函数一起使用出了什么问题,想请帮忙看一下

收起
参与6

查看其它 2 个回答richard_macy的回答

richard_macyrichard_macy数据库管理员macys

你的一些数据应该不支持 这些 +/-,

看看 你的 这个COLUMN,  seqrule, 是不是都有 {}[]

零售/批发 · 2015-11-10
浏览971

回答者

richard_macy
数据库管理员macys
擅长领域: 数据库服务器存储

richard_macy 最近回答过的问题

回答状态

  • 发布时间:2015-11-10
  • 关注会员:3 人
  • 回答浏览:971
  • X社区推广