反馈已提交

网络繁忙

当前为10.0版本文档,只有最新版本的文档支持在线编辑修改,如果想创建/编辑文档,请移步至 最新版帮助文档

函数-序列号

  • 文档创建者:追心
  • 历史版本:11
  • 最近更新:追心 于 2021-09-26
  • 1. 概述

    1.1 版本

    报表服务器版本JAR 包版本插件版本
    10.02019-01-011.0

    1.2 应用场景

    与oracle数据库的序列号功能类似。可用于生成数据库主键。代替数据库序列功能,方便报表在不同数据库的移植。

    1.3 功能描述

    用函数生成序列号。

    主要用于填报生成主键功能,请不要用于报表展示场景。

    2. 插件介绍

    2.1 插件安装

    点击下载插件:序列号函数插件

    设计器插件安装方法请参见:设计器插件管理

    服务器安装插件方法请参见:服务器插件管理

    2.2 操作方法

    2.2.1 序列管理

    在设计器的服务器菜单下点击序列管理菜单

    序列管理.png

    开始值:序列产生的第一个值。

    最大值:序列的最大值,能使用的最大值为9223372036854775807 

    增加值:每次获取序列下个值时,在当前值基础上增加的值。

    循环:若开启循环,当获取序列下个值超过序列的最大值时,则从开始值重新生成值。

    当前值:若勾选,则可以修改序列的当前值。


    2.2.2 序列号函数

    SEQUENCE_CURRENT_VALUE:返回序列的当前值。

    SEQUENCE_CURRENT_VALUE(seq_name, [min_length], [repeat_value])

    seq_name:序列名称;

    min_length:序列值的最小长度,若未设置,则返回序列原值,若设置序列原值没有最小长度,则会填充补齐到最小长度,若值为正值,则在左侧填充,若为负值,则在右侧填充;

    repeat_value:填充值,默认值为0。


    SEQUENCE_NEXT_VALUE:返回序列的下个值。

    SEQUENCE_NEXT_VALUE(seq_name, [min_length], [repeat_value])

    seq_name:序列名称;

    min_length:序列值的最小长度,若未设置,则返回序列原值,若设置序列原值没有最小长度,则会填充补齐到最小长度,若值为正值,则在左侧填充,若为负值,则在右侧填充;

    repeat_value:填充值,默认值为0。

    3. 示例

    3.1 函数使用示例

    例如:首选在序列管理创建一个seq1序列,开始值为0,最大值为1000,增加值为1。

    SEQUENCE_CURRENT_VALUE("seq1") ,生成的值为 0

    SEQUENCE_CURRENT_VALUE("seq1",3),生成的值为 000

    SEQUENCE_CURRENT_VALUE("seq1",3,"a"),生成的值为 aa0

    SEQUENCE_CURRENT_VALUE("seq1",-3,"a"),生成的值为 0aa


    SEQUENCE_NEXT_VALUE("seq1") ,生成的值为 0

    SEQUENCE_NEXT_VALUE("seq1",3),生成的值为 000

    SEQUENCE_NEXT_VALUE("seq1",3,"a"),生成的值为 aa0

    SEQUENCE_NEXT_VALUE("seq1",-3,"a"),生成的值为 0aa


    3.2 用于填报生成主键示例

    创建一个seq1序列,开始值为0,最大值999999999999999999,增加值为1,禁用循环。

    模板>报表填报属性,增加一个内置 SQL,主键值的函数为SEQUENCE_NEXT_VALUE("seq1") 即可


    3.3 时间形式的生成主键示例

    若一个业务在一秒内,不超过一万的并发,可以创建一个时间加循环序列的做完主键。

    创建一个seq1序列,开始值为0,最大值9999,增加值为1,启用循环。此序列只允许某一张报表使用。

    函数内容如下,

    CONCATENATE(FORMAT(NOW(),'yyyyMMddHHmmss'),SEQUENCE_NEXT_VALUE("seq1",4))

    生成值为 202109260903310013


    4. 注意事项

    1. 若序列号函数使用错误,则返回-1。

    2. 第一次使用SEQUENCE_NEXT_VALU函数,会获取到序列的开始值。

    3. 此序列为全局序列,对整个报表服务器来生成序列的,不是针对某一个报表,每次使用SEQUENCE_NEXT_VALU函数都会有新的值,除非勾选了循环和超过最大值,才从开始值生成值。

    附件列表


    主题: 报表专题
    已经是第一篇
    已经是最后一篇
    • 有帮助
    • 没帮助
    • 只是浏览

    售前咨询电话

    400-811-8890转1

    在线技术支持

    请前往「服务平台」,选择「在线支持」

    热线电话:400-811-8890转2

    总裁办24H投诉

    热线电话:173-1278-1526