首页 > 其他分享 >自动生成流水号(后台数据)

自动生成流水号(后台数据)

时间:2024-03-18 22:13:03浏览次数:15  
标签:no -- 生成 流水号 varchar2 后台 CUX start

--存储过程实现流水号 create or replace procedure cux_get_serial_number(p_model_name in varchar2, --模块 参数1 p_start_no in varchar2, --前缀 参数2 p_length in number, --得到流水号长度 参数3 p_y_n in varchar2, --是否显示模块 p_separator in varchar2 DEFAULT null, --分隔符 x_serial_no out varchar2) is v_result varchar2(100) := ''; --结果 变量1 v_current_no varchar2(100) := ''; --当前值 变量2 v_num number := 0; --补值 变量3 v_start_no varchar2(100); --前缀 变量4 v_rowid varchar2(100); --要更新行的rowid 变量4 v_yyyy varchar2(100); --年 v_mm varchar2(100); --月 v_dd varchar2(100); --日 v_serial_num number; --流水号 v_curr_num varchar2(100); begin v_yyyy := to_char(sysdate, 'yyyy'); v_mm := to_char(sysdate, 'mm'); v_dd := to_char(sysdate, 'dd'); --获取流水号前缀 v_start_no := p_start_no; --参数值赋给变量 select max(ces.current_no) into v_serial_num from cux.cux_ebs_system_no ces where ces.module_name = p_model_name and ces.start_no = p_start_no --得到类型与前缀相同值的数量,主要用于判断是否产生过流水号 and ces.yyyy = v_yyyy and ces.mm = v_mm and ces.dd = v_dd; --判断是否有资料 没有则产生初始值插入库中 --没有产生过 if v_serial_num is null then --得到当前日期起始流水号 --得到p_length长的0001流水号 v_current_no := lpad('1', p_length, '0'); v_curr_num := v_current_no; insert into cux.cux_ebs_system_no (module_name, start_no, yyyy, mm, dd, current_no, create_date) values (p_model_name, p_start_no, v_yyyy, v_mm, v_dd, v_current_no, sysdate); else --当前日期已经产生过流水号,取最大流水号+1 --v_curr_num := v_serial_num + 1; v_curr_num := lpad(v_serial_num + 1, p_length, '0'); update cux.cux_ebs_system_no ces set ces.current_no = v_curr_num, ces.last_update_date = sysdate where ces.module_name = p_model_name and ces.start_no = p_start_no and ces.yyyy = v_yyyy and ces.mm = v_mm and ces.dd = v_dd; end if; commit; if p_y_n = 'Y' then if p_separator is null then x_serial_no := p_model_name || p_start_no || v_yyyy || v_mm || v_dd || v_curr_num; else x_serial_no := p_model_name || p_start_no || p_separator || v_yyyy || v_mm || v_dd || v_curr_num; end if; elsif p_y_n = 'N' then if p_separator is null then x_serial_no := p_start_no || v_yyyy || v_mm || v_dd || v_curr_num; else x_serial_no := p_start_no || p_separator || v_yyyy || v_mm || v_dd || v_curr_num; end if; end if; end; -----表结构 -- Create table create table CUX.CUX_EBS_SYSTEM_NO ( module_name VARCHAR2(100), start_no VARCHAR2(100), yyyy VARCHAR2(100), mm VARCHAR2(100), dd VARCHAR2(100), current_no NUMBER, create_date DATE, last_update_date DATE ) tablespace APPS_TS_TX_DATA pctfree 10 initrans 1 maxtrans 255 storage ( initial 128K next 128K minextents 1 maxextents unlimited pctincrease 0 ); -- Add comments to the table comment on table CUX.CUX_EBS_SYSTEM_NO is 'EBS模块对应生成的流水号'; -- Add comments to the columns comment on column CUX.CUX_EBS_SYSTEM_NO.module_name is '模块例如(PO,WIP)'; comment on column CUX.CUX_EBS_SYSTEM_NO.start_no is '流水号开始前缀'; comment on column CUX.CUX_EBS_SYSTEM_NO.yyyy is '年'; comment on column CUX.CUX_EBS_SYSTEM_NO.mm is '月'; comment on column CUX.CUX_EBS_SYSTEM_NO.dd is '日'; comment on column CUX.CUX_EBS_SYSTEM_NO.current_no is '流水号';   -----end---   ----function 方式实现   create or replace function cux_get_serial_number_function(p_model_name in varchar2, --模块 参数1 p_start_no in varchar2, --前缀 参数2 p_length in number, --得到流水号长度 参数3 p_y_n in varchar2, --是否显示模块 p_separator in varchar2 DEFAULT null --分隔符 ) return varchar2 is x_result varchar2(200); pragma autonomous_transaction; begin cux_get_serial_number(p_model_name, p_start_no, p_length, p_y_n, p_separator, x_result); return x_result; end;          

标签:no,--,生成,流水号,varchar2,后台,CUX,start
From: https://www.cnblogs.com/ivenlin/p/18081569

相关文章

  • 为 java 开发者设计的性能测试框架,用于压测+测试报告生成
    拓展阅读junit5系列教程基于junit5实现junitperf源码分析Autogeneratemockdataforjavatest.(便于Java测试自动生成对象信息)Junitperformancerelyonjunit5andjdk8+.(java性能测试框架。压测+测试报告生成。)junitperfjunitperf是一款为java开发者设......
  • 基于GD32E230C8t6的生成PWM实验
    在某立创嫖了块GD32E230来玩,通过GD32于STM32的对照表可知该芯片对应的是STM32f030C8T6,结合之前测试梁山派天空星青春版的经验试着用CubeMx配置个定时器PWM测试下。1.时钟树配置芯片型号选择stm32f030c8t6,进入时钟树配置,兆易创新的手册说最大支持72Mhz,但f030最大只有48Mhz,所......
  • 数字人解决方案— SadTalker语音驱动图像生成视频原理与源码部署
    简介随着数字人物概念的兴起和生成技术的不断发展,将照片中的人物与音频输入进行同步变得越来越容易。然而,目前仍存在一些问题,比如头部运动不自然、面部表情扭曲以及图片和视频中人物面部的差异等。为了解决这些问题,来自西安交通大学等机构的研究人员提出了SadTalker模型......
  • shell生成测试数据
    #!/bin/bash#生成测试数据的函数generate_test_data(){localdata_dir=$1localnum_files=$2localfile_size=$3#创建数据目录mkdir-p"$data_dir"#生成指定数量和大小的文件for((i=1;i<=$num_files;i++));doloca......
  • Python教程:生成Excel并更改表头
    简介在数据处理和报告生成中,Excel文件是一种常见的格式。Python提供了许多库来处理Excel文件,其中包括openpyxl,它是一个功能强大且易于使用的库,可以用来生成、修改和读取Excel文件。本文将介绍如何使用Python的openpyxl库生成Excel文件,并且演示如何更改表头。生成Excel文件首先......
  • uniapp微信小程序随机生成canvas-id报错?
    uniapp微信小程序随机生成canvas-id报错?文章目录uniapp微信小程序随机生成canvas-id报错?效果图遇到问题解决场景:子组件,在mounted绘制canvas;App、H5端正常显示,微信小程序报错;效果图遇到问题随机生成canvas-id方式,控制台报错【:canvas-idattributeisun......
  • WordPress自动生成原创文章插件
    WordPress作为最受欢迎的内容管理系统之一,为博客和网站的搭建提供了便捷的解决方案。而在内容创作方面,自动生成原创文章的插件为WordPress用户提供了更为高效的选项。什么是WordPress自动生成原创文章插件?WordPress自动生成原创文章插件是一类功能强大的工具,它们通过结合......
  • 外贸网站文章批量生成器
    随着全球贸易的不断发展,越来越多的企业开始关注外贸市场,而拥有高质量的内容是吸引潜在客户的关键之一。然而,为外贸网站生产大量优质的文章内容可能是一项耗时且繁琐的任务。因此,外贸网站文章批量生成软件成为了解决这一难题的利器。外贸网站文章批量生成的重要性提升网站......
  • pytest+allure生成html报告(入门篇)
    一. 安装pytest库pipinstallpytest代码如下(示例):importpytestclassTestLogin:deftest_login(self):print('---------------login--------------')if__name__=='__main__':pytest.main(['-vs']) 运行结果如下:二、在pyth......
  • 构建自己的二维码生成工具
    原文链接欢迎大家对于本站的访问-AsterCasc前言最近开发的嵌入式人脸核验机器上有二维码识别解析的需求,所以经常需要使用不同样式的二维码进行测试,进行识别度判断和效率调整。但是很多生成二维码的网址不是广告太多,就是功能不全,所以这里咱们简单写一个放在自己的网站中......