反馈已提交

网络繁忙

函数-序列号

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

    1.1 版本

    报表服务器版本插件版本
    11.01.0

    1.2 应用场景

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

    1.3 功能描述

    用函数生成序列号。

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

    2. 插件介绍

    2.1 插件安装

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

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

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

    2.2 操作方法

    2.2.1 序列管理

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

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

    最大值:序列的最大值,能使用的最大值为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函数都会有新的值,除非勾选了循环和超过最大值,才从开始值生成值。

    附件列表


    主题: 报表专题
    • 有帮助
    • 没帮助
    • 只是浏览
    中文(简体)

    鼠标选中内容,快速反馈问题

    鼠标选中存在疑惑的内容,即可快速反馈问题,我们将会跟进处理。

    不再提示

    10s后关闭

    联系我们
    在线支持
    获取专业技术支持,快速帮助您解决问题
    工作日9:00-12:00,13:30-17:30在线
    页面反馈
    针对当前网页的建议、问题反馈
    售前咨询
    采购需求/获取报价/预约演示
    或拨打: 400-811-8890 转1
    qr
    热线电话
    咨询/故障救援热线:400-811-8890转2
    总裁办24H投诉:17312781526
    提交页面反馈
    仅适用于当前网页的意见收集,帆软产品问题请在 问答板块提问前往服务平台 获取技术支持