DB2存储过程

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

  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

3同行回答

richard_macyrichard_macy数据库管理员macys
分解一下你的这个QUERY, 只是 输出locate(\'[\',s.seqrule,1)-1locate( \']\',s.seqrule,1) - (locate( \'[\',s.seqrule,1) + 1)是不是有 负值。显示全部

分解一下你的这个QUERY, 只是 输出

locate(\'[\',s.seqrule,1)-1

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

是不是有 负值。

收起
零售/批发 · 2015-11-18
浏览991
奔跑的蜗牛奔跑的蜗牛高级软件开发工程师武汉家事易农业科技有限公司
具体我该怎么解决啊!一直都是报错:  SQL0138N  内置字符串函数的数字自变量超出了范围。  SQLSTATE=22011显示全部

具体我该怎么解决啊!一直都是报错:  SQL0138N  内置字符串函数的数字自变量超出了范围。  SQLSTATE=22011

收起
软件开发 · 2015-11-11
浏览965
richard_macyrichard_macy数据库管理员macys
你的一些数据应该不支持 这些 +/-,看看 你的 这个COLUMN,  seqrule, 是不是都有 {}[]显示全部

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

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

收起
零售/批发 · 2015-11-10
浏览999

提问者

奔跑的蜗牛
高级软件开发工程师武汉家事易农业科技有限公司
擅长领域: 数据库云计算服务器

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2015-11-07
  • 关注会员:3 人
  • 问题浏览:2630
  • 最近回答:2015-11-18
  • X社区推广