序列号生成存储过程

存储过程实现生成流水号 存储过程实现流水号,可以实现防止并发生成重复的流水号,.net 技术,sql server 数据库编写,可以参考学习哦 立即下载

--获取序列号mssql
create PROCEDURE [dbo].[GETGLIDE]
@fn varchar(100),--序列号字典中某规则的名称
@glide VARCHAR(100) output--输出当前序列号
as
DECLARE
  @i INT =0,
  @strlen INT = 0,
  @strtemp VARCHAR(20) = '',
  @exception INT=0,
  @t_count INT=0,--当前序列号值(变化部分)
  @PREFIX VARCHAR(4),--前缀
  @POSTFIX VARCHAR(4),--后缀
  @DATEGLIDE CHAR(1),--是否包含时间 (1 包含 0 不包含)
  @GLIDELEN INT--序列号总长度
BEGIN
----初始值
 select @exception=count(*) from sys_business_glide where FNAME=@fn
 select @t_count=glide,@PREFIX=PREFIX,@POSTFIX=POSTFIX,@DATEGLIDE=DATEGLIDE,@GLIDELEN=GLIDELEN
   from sys_business_glide where FNAME=@fn
----不存在此序列号
 if(@exception=0)
  begin
   SET @glide='当前不存在此名称的序列号规则'
  END
----存在此序列号
 ELSE
  BEGIN
   SET @t_count=@t_count+1
--------拼接序列号 
   IF(@DATEGLIDE='1')--包含时间
    BEGIN
     SET @strLen=LEN(@PREFIX+REPLACE(CONVERT(varchar(10),GETDATE(),23),'-','')+cast(@t_count AS VARCHAR)+@POSTFIX)
     IF(@GLIDELEN>@strLen)--需补0
      BEGIN
       WHILE @i<(@GLIDELEN-@strLen)
       BEGIN
        SET @strtemp=@strtemp+'0' 
        set @i=@i+1
       END
       SET @glide=@PREFIX+REPLACE(CONVERT(varchar(10),GETDATE(),23),'-','')+@strtemp+cast(@t_count AS VARCHAR)+@POSTFIX
      END
     ELSE IF (@GLIDELEN=@strLen)--不需要补0
      BEGIN
       SET @glide=@PREFIX+REPLACE(CONVERT(varchar(10),GETDATE(),23),'-','')+cast(@t_count AS VARCHAR)+@POSTFIX
      END
     ELSE--长度超出
      BEGIN
       SET @glide='序列号长度设置有问题'
      END
    END
   ELSE--不包含时间
    BEGIN
      SET @strLen=LEN(@PREFIX+cast(@t_count AS VARCHAR)+@POSTFIX)
      IF(@GLIDELEN>@strLen)--需补0
       BEGIN
        SET @i=0
        WHILE @i<(@GLIDELEN-@strLen)
        BEGIN
         SET @strtemp=@strtemp+'0' 
         set @i=@i+1
        END
        SET @glide=@PREFIX+@strtemp+cast(@t_count AS VARCHAR)+@POSTFIX
       END
      ELSE IF (@GLIDELEN=@strLen)--不需要补0
       BEGIN
        SET @glide=@PREFIX+cast(@t_count AS VARCHAR)+@POSTFIX
       END 
      ELSE--长度超出
       BEGIN
        SET @glide='序列号长度设置有问题'
       END
     END
--------修改当前变化部分值
   Update sys_business_glide Set glide=cast(@t_count AS INT) Where FNAME=@fn  
  END
END

 

--获取序列号oracle

create or replace PROCEDURE GETGLIDE(fn in varchar2,fglide out varchar2) is --序列号字典中某规则的名称 输出当前序列号
  i integer :=0;
  strlen integer :=0;
  strtemp VARCHAR2(20);
  strjoin varchar2(100);
  t_exception integer :=0;
  t_count integer :=0;--当前序列号值(变化部分)
  t_prefix VARCHAR2(4);--前缀
  t_postfix VARCHAR2(4);--后缀
  t_dateglide CHAR(1);--是否包含时间 (1 包含 0 不包含)
  t_glidelen integer :=0;--序列号总长度
BEGIN
----初始值
  select count(*) into t_exception from sys_business_glide where FNAME=fn;
 select PREFIX,POSTFIX,DATEGLIDE,GLIDE,GLIDELEN into t_prefix,t_postfix,t_dateglide,t_count,t_glidelen from sys_business_glide where FNAME=fn;
----不存在此序列号
if t_exception=0 then
   fglide := '当前不存在此名称的序列号规则';
----存在此序列号
ELSE
   t_count:=t_count+1;
--------拼接序列号 
   IF t_dateglide = '1' then --包含时间
      strlen := length(t_prefix||to_char(sysdate,'YYYYMMDD')||cast(t_count AS VARCHAR2)||t_postfix);
      IF t_glidelen>strlen then --需补0
            WHILE i<(t_glidelen-strlen) loop begin  strtemp:=strtemp||'0'; i:=i+1; end; end loop; fglide:=t_prefix||to_char(sysdate,'YYYYMMDD')||strtemp||cast(t_count AS VARCHAR2)||t_postfix; 
      ELSIF t_glidelen=strlen then --不需要补0
            fglide := t_prefix||to_char(sysdate,'YYYYMMDD')||cast(t_count AS VARCHAR2)||t_postfix;
      Elsif t_glidelen<strlen then --长度超出
         fglide := '序列号长度设置有问题';
        end if;
   ELSE--不包含时间
      strlen := length(t_prefix||cast(t_count AS VARCHAR2)||t_postfix);
      IF t_glidelen>strlen then--需补0
           WHILE i<(t_glidelen-strlen) loop begin strtemp:=strtemp||'0'; i:=i+1; end; end loop; fglide:=t_prefix||strtemp||cast(t_count AS VARCHAR2)||t_postfix;
      ELSIF t_glidelen=strLen then--不需要补0
        fglide:=t_prefix||cast(t_count AS VARCHAR2)||t_postfix;
      Elsif t_glidelen<strlen then --长度超出
           fglide:='序列号长度设置有问题';
        END IF;
   END if;
--------修改当前变化部分值
Update sys_business_glide Set glide=cast(t_count AS integer) Where FNAME=fn;
END if;
   
commit;
   
exception
 when others then
 rollback;
end getglide;

测试:在sql窗口中测试成功,但是在测试窗口中失败(报无效参数);

declare mm varchar2(100);
begin
 getglide('aa',mm);
 dbms_output.put_line(mm);
end;

存储设备序列号查询软件 存储设备序列号查询软件.zip 立即下载

相关推荐

存储过程-自动生成编号

简单实用,自动生成编号,很好的解决了编号统一标准的问题。

找到SQL Server的序列号

      有时候希望获取当前机器上安装的SQL Server序列号,但注册表中序列号是经过加密的,因此我写了一个小工具获取当前SQL Server的序列号。程序比较粗糙,没有做错误验证。             下载地址:http://files.cnblogs.com/CareySon/SQLServerProductCode.rar...

weixin_34122810的博客 362

Unity 数字孪生实战:PiXYZ Plugin工业模型高效处理指南

本文是Unity数字孪生实战指南,重点介绍了如何使用PiXYZ Plugin高效处理工业CAD模型。针对工业模型导入Unity时面临的格式壁垒、数据爆炸和资产混乱等核心痛点,文章提供了从环境安装、基础导入到智能减面、资产清理的完整解决方案,并分享了预设自动化、运行时导入等高级技巧与性能优化策略,帮助开发者快速打通工业设计与实时交互流程。

weixin_29009501的博客 257

SQL Server数据库事务日志序列号(LSN)介绍

  日志序列编号(LSN)是事务日志里面每条记录的编号。当你执行一次备份时,一些LSN值就被同时存储在文件本身及msdb..backupset表中。你可以使用RESTORE HEADERONLY语法来从备份文件中获取LSN值。 注意:在SQL Server 2000中,有一列叫做DifferentialBaseLSN。但在SQL Server 2005中,相同的列名称变成了Data

灰太狼的博客 1万+

服务器卡死排查实战:从现象分类到根因定位的完整手册

服务器卡死是运维中最令人头疼的故障之一,从游戏圈吐槽的“土豆服务器”到生产环境中的Linux系统无响应、rsync复制挂起,本质都是系统或进程失去正常响应能力。其原理通常涉及CPU、内存、磁盘IO或网络资源耗尽,以及内核和驱动异常。掌握系统化的排查方法,能够帮助工程师快速定位根因、缩短故障时间,避免盲目重启。本文从资源、层级、场景等多维度分类,结合top、dmesg、strace等工具,梳理一套从现象确认、指标收集、日志分析到进程定位的实战排查流程,并覆盖常见高频场景与预防治理建议。无论你是运维新手还是老手

weixin_33851177的博客 375

原子力显微镜AFM图像处理软件Gwyddion使用教程(图文)

Gwyddion使用教程Gwyddion简介Gwyddion user guide下载地址本次教程用的AFM扫描图像下载地址AFM/STM校准样品Gwyddion使用step1step2step3step4step5step6step7step8你没见过的CD磁道到底长啥样一张图总结 Gwyddion简介        &nbs...

王纯配的博客 5万+

日志序列号 LSN

日志序列号简介Microsoft SQL Server 事务日志中的每个记录都由一个唯一的日志序列号 (LSN) 标识。LSN 是这样排序的:如果 LSN2 大于 LSN1,则 LSN2 所标识的日志记录描述的更改发生在日志记录 LSN1 描述的更改之后。 发生重大事件的日志记录的 LSN 对于构造正确的还原顺序可能很有用。因为 LSN 是有顺序的,所以可以比较它们是否相等

ynigeng的专栏 2035

Zemax光机热集成分析:从FEA数据导入到光学性能评估实战

在精密光学系统设计中,环境温度变化和机械应力是导致像质恶化的关键因素,这涉及到光、机、热多物理场的耦合分析。其核心原理在于,通过有限元分析(FEA)软件(如ANSYS)模拟热与力学载荷下的结构变形和温度分布,并将这些物理场数据精准映射到光学设计软件(如Zemax)中,以评估其对调制传递函数(MTF)、点列图等核心光学指标的影响。这项技术的工程价值在于,它使设计从静态的理想模型跃升至动态的工程现实,能够在设计阶段就预测并补偿环境扰动,从而显著提升光学系统在航空航天、车载镜头、高功率激光等严苛工况下的可靠性与稳

weixin_30565327的博客 356

用存储过程产生序列号,解决了匿名用户没有存储过程授权的问题

匿名用户没有存储过程授权, 会报错execute command denied to user ''@'localhost' for routine 需要建立用户并授权 1:建立用户 CREATE USER app IDENTIFIED BY 'abc'; 2:授权用户 GRANT ALL PRIVILEGES ON test.* TO app@localhost identifi...

星.云计算 182

大模型越狱指令数据集全解析:从AdvBench到HarmBench

本文全面解析了AdvBench、HarmBench等主流大模型越狱指令数据集。AdvBench作为基础测试集,用于快速评估模型安全基线;HarmBench则以其全面的文本、多模态及对抗性攻击评估,成为当前权威的深度安全审计工具。文章还介绍了MaliciousInstruct、JailbreakBench等特色数据集,并提供了根据实际场景选择与使用这些数据集的具体实战指南。

weixin_29327525的博客 618

AttributeError: module ‘numpy‘ has no attribute ‘int‘解决方案

本文主要介绍了AttributeError: module ‘numpy’ has no attribute 'int’解决方案,希望能对使用numpy的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案 2.1 方案一 2.2 方案二

weixin_43178406的博客 28万+

生成唯一编号(序列号)--sql存储过程

CREATE procedure [dbo].[P_Sys_GetSerialNo] --取业务序列号 @SeqType int, --序列号类别,4位数,如:10+2+1 即1021 @GetCount int=1 , --要取的编号数 @IDList varchar(8000) out, --返回的序号列表 @ErrNum ...

weixin_30624825的博客 484

【EB-03】 AUTOSAR builder与EB RTE集成

打开EB工具后,在EB的步骤是:执行MultiTask(2)-> Mapping Component to Partitions(4)->Task Mapping(5)-> SvcAs_Trigger(7)-> Code Generation(8)如涉及新增BSW Module,也需要重复以上步骤。

libuping2023的博客 960

oracle 生成序列号存储过程

项目中经常要根据年月日规则生成序列号,简单写了个存储过程可根据需要扩展 一、序列号存储表 -- Create table create table SYS_GENKEY (   DATESTR  VARCHAR2(50),   MAXCOUNT NUMBER,   TYPE     NUMBER ) -- Add comments to the columns comment

jianhuisc的专栏 1205

定位精度再突破!Inner-MPDIoU让YOLOv11边界框回归更精准

Inner-MPDIoU 凭借辅助边框与最小点距离的双机制创新,彻底解决了传统 IoU 损失在边界框回归上的精度瓶颈。本教程从原理到代码实现,再到工业场景适配,完整呈现了其在 YOLOv11 中的集成路径。只需简单修改两处核心脚本,你的目标检测模型就能在边界框定位精度上实现跨越式提升——无论是学术研究中的指标突破,还是工业场景下的精细检测需求,Inner-MPDIoU 都能成为你攻克边界框回归难题的利器。现在就动手尝试,让你的检测模型在定位精度上再上一个台阶吧。

FJN110的博客 158

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

mysql 存储过程 序列_Oracle 生成序列号存储过程

项目中经常要根据年月日规则生成序列号,简单写了个存储过程可根据需要扩展 一、序列号存储表 -- Create tablecreate table SYS_项目中经常要根据年月日规则生成序列号,简单写了个存储过程可根据需要扩展一、序列号存储表-- Create tablecreate table SYS_GENKEY(DATESTR VARCHAR2(50),MAXCOUNT NUMBER,TYP...

weixin_35819549的博客 280

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Mysql存储过程生成序列号

【代码】Mysql存储过程生成序列号。

weixin_71212893的博客 162

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

存储过程生成系统中所有表的序列号

-- 序列号生成表 begin pr_droptable('best_tablesequence'); end; / create table best_tablesequence( name varchar2(32) not null, --表名 value number not null, --序列取值 constraint pk_best...

iteye_14109的博客 213

验证身份证号的存储过程 oracle,Oracle 生成序列号存储过程

项目中经常要根据年月日规则生成序列号,简单写了个存储过程可根据需要扩展一、序列号存储表-- Create tablecreate table SYS_GENKEY(DATESTR VARCHAR2(50),MAXCOUNT NUMBER,TYPE NUMBER)-- Add comments to the columnscomment on column SYS_GENKEY.DATES...

weixin_28883589的博客 386

【实战】MySQL存储过程生成每日唯一订单序列号

真实项目中存储过程的使用

weixin_73330044的博客 111

生成特定序列號存儲過程

create table SeqBASIC_SEQ(         -- ID列为自增列        SeqID int identity(1,1) primary key,       -- Sequence值        SeqVal varchar(1)  ) --DROP table SeqBASIC_SEQ  create procedure P_GetNewSeq

馨香紫韵 654

Java+Mysql存储过程生成订单序列号

订单序列号生成

m0_46211448的博客 1276

[转] SQL Server自动生成日期加数字的序列号

需求:     需要生成下面的序列号,前半部分是yyyymmdd格式的年月日时间数字,后半部分则是每天都从1顺序增长的数字,位数要固定,中间不足的补0。 以下为引用的内容:       USE MASTER              GOIF EXISTS(SELECT * FROM dbo.sysdatabases WHERE name=my_tes

gaochc的专栏 640

java mysql获取流水号_mybatis+mysql 使用存储过程生成流水号的实现代码

使用存储过程,在操作数据库时开启事务,避免并发时同时操作造成数据重复CREATE DEFINER=`root`@`localhost` PROCEDURE `GetSerialNo`(IN tsCode VARCHAR(50),OUT result VARCHAR(200) )BEGINDECLARE tsValue VARCHAR(50);DECLARE tdToday VARCHAR(20);...

weixin_29843603的博客 346

存储过程--自动生成有日期的序列号(头可自己定义)

--=============================================--Author:<vagerent>--Createdate:<2006-12-14>--Description:<获取编码,形如HEAD20060512000001;(头+日期+6位整数)后面为六位,每新的一年编号重新归0&gt...

dianqi9395的博客 327

MySQL之生成唯一的序列号和删除重复数据

命令行: begin 启动事务 insert into 表名 values(); 向表中插入数据 select * from 表名 rollback 回滚事务生成唯一序列号 需要用到唯一序列号的场景:数据库主键,业务序列号如发票号,车票号,订单号等。如何选择生成序列号的方式 1:优先选择系统提供的序列号生成方式 2:在特殊的情况下可以使用SQL方法生成序列号MySQL: AUTO_

a3060858469的博客 4515
上一篇: ASP.NET 应用程序与页面生命周期(意译)
下一篇: asp.net 映射网络文件服务器磁盘
andycode
博客等级 码龄17年 12粉丝 80原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值