weixin_43735267
明月千度
采纳率50%
2019-04-28 20:38

运行DB2的自定义函数出现问题,求教

已采纳

最近在学DB2,碰到自定义函数,但是有错误,网上查了,一脸懵逼。希望来个大神帮我补补课

CREATE OR REPLACE FUNCTION "F_GET_MAX_KEY" ("IC_NAME" VARCHAR(255) )
  RETURNS VARCHAR(255)
BEGIN
  /**
  描述:根据序列生成表的流水主键
  参数:IC_NAME:标识名(忽略大小写).
       'SHORT':YYMMDD+序列SEQ_MAXKEY值;
       'LONG':YYYYMMDDHHMISSFF3+序列SEQ_MAXKEY值;
       其他:YYYYMMDDHHMISS+序列SEQ_MAXKEY值;
  **/
  DECLARE RESULTSTR VARCHAR (255) DEFAULT '';
  SET IC_NAME = UPPER(IC_NAME) ;
  IF UPPER(IC_NAME) = 'SHORT' THEN
      SELECT TO_CHAR (CURRENT TIMESTAMP, 'YYMMDD') || LPAD (NEXTVAL FOR SEQ_MAXKEY, 4, '0')
      INTO RESULTSTR 
      FROM SYSIBM.DUAL;
  ELSEIF UPPER(IC_NAME) = 'LONG' THEN
      SELECT TO_CHAR (CURRENT TIMESTAMP, 'YYYYMMDDHHMISSFF3') || LPAD (NEXTVAL FOR SEQ_MAXKEY, 4, '0')
      INTO RESULTSTR
      FROM SYSIBM.DUAL;
  ELSE
      SELECT TO_CHAR (SYSDATE, 'YYYYMMDDHHMISS') || LPAD (NEXTVAL FOR SEQ_MAXKEY, 4, '0')
      INTO RESULTSTR
      FROM SYSIBM.DUAL;
  END IF;
  RETURN RESULTSTR;
END;

图片说明

在DBeaver 里运行sql脚本出现如下问题:

图片说明

请问大神,怎么解决?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

1条回答

  • weixin_43735267 明月千度 2年前

    我在DBeaver中新建了一个函数脚本,把函数复制进去, end 后面去掉分号 ,鼠标要把函数全部选中 右击执行 执行sql语句。成功

    此问答结束

    点赞 评论 复制链接分享

相关推荐