SQL SERVER存储过程生成字母+数字的编码

  公司内设备管理系统中设备建账功能,功能目的是对新进设备进行记录并入库。其中设备编号一项定义为自己修改(查看之前的设备号,取一个不重复的值来填写),感觉特别麻烦!用存储过程自动生成编码岂不是更效率。

 
需求:根据设备组代码(PC)+递增数字,构成编码,编码中数字必须为三位数,无三位数的,以‘0’占位。

代码如下: 


 1 --测试数据库准备
2 use master
3 go
4 if exists(select * from dbo.sysdatabases where name=‘hzf‘)
5 drop database hzf
6 go
7 create database hzf
8 go
9 use hzf
10 go
11 --创建测试表
12 ALTER proc [dbo].[get_new_id]
13 @new_id varchar(16) output, --生产的编号
14 @number int, --设置编码数字的最大位数
15 @group varchar(5) --编号字母
16 as
17 begin
18
19 set @new_id = null
20
21 select top 1 @new_id = ID from test_id where id like @group+‘%‘ order by convert(int,RIGHT(id,LEN(id)-len(@group)) ) desc
22
23 if @new_id is null
24 set @new_id = @group+REPLICATE(‘0‘,2)+‘1‘
25 else
26 begin
27 declare @big varchar(16)
28 set @big = convert(int, RIGHT(@new_id,LEN(@new_id)-len(@group)) )+1
29 if @big <100
30 begin
31 set @big = REPLICATE(‘0‘,3-LEN(@big)) + @big
32 end
33 set @new_id = @group + @big
34 end
35
36
37 end
38
39 GO
40
41 --测试
42 declare @test int
43 set @test=1
44 while(@test<=20)
45 begin
46 declare @new_id varchar(14)
47 exec get_new_id @new_id output,7,‘PC‘
48 insert into test_id values(@new_id)
49 set @test = @test+1
50 end
51 select * from test_id

时间: 2024-09-30 01:23:36

SQL SERVER存储过程生成字母+数字的编码的相关文章

SQL Server 存储过程生成流水号

SQL Server利用存储过程生成流水号 USE BiddingConfig SET QUOTED_IDENTIFIER ON SET ANSI_NULLS ON GO -- ============================================= -- Author: 小爽 -- Create date: 2017-05-25 -- Description: 业务数据KEY生成 -- 构成规则: [区域编号][应用系统编号][版本编号][功能编号][日期戳][流水记录号]

SQL Server 存储过程具体解释

SQL Server 存储过程具体解释 存储过程的优缺点 ◆长处: 运行速度更快. 存储过程仅仅在创造时进行编译,而一般SQL语句每运行一次就编译一次,所以使用存储过程运行速度更快. 存储过程用于处理复杂的操作时,程序的可读性更强.网络的负担更小. 使用存储过程封装事务性能更佳. 能有效的放注入,安全性更好. 可维护性高.在一些业务规则发生变化时.有时仅仅需调整存储过程就可以.而不用修改和重编辑程序. 更好的代码重用. ◆ 缺点: 存储过程将给server带来额外的压力. 存储过程多多时维护比較

SQL Server 2008 R2——使用数字辅助表(master..spt_values)实现用计数字段对记录进行重复显示

原文:SQL Server 2008 R2--使用数字辅助表(master..spt_values)实现用计数字段对记录进行重复显示 =================================版权声明================================= 版权声明:原创文章 谢绝转载  请通过右侧公告中的“联系邮箱([email protected])”联系我 勿用于学术性引用. 勿用于商业出版.商业印刷.商业引用以及其他商业用途. 本文不定期修正完善. 本文链接:http:

SQL Server存储过程的初步认知

什么是存储过程? 存储过程就是作为可执行对象存放在数据库中的一个或多个SQL命令.实际上存储过程就是能完成一定操作的一组SQL语句. 为什么要用存储过程? 1.  存储过程只在创造时候编译,以后每次执行存储过程都不需要再重新的编译,而一般的SQL语句每执行一次就需要编译一次,所以使用存储过程可提高数据库执行速度. 2.  当对数据库进行复杂操作时,可将此复杂操作用存储过程封装起来与数据库提供的事物处理结合在一起. 3.  存储过程可以重复的使用,降低开发人员的工作量,提高工作效率. 4.  安全

Sql Server 存储过程中查询数据无法使用 Union(All)

原文:Sql Server 存储过程中查询数据无法使用 Union(All) 微软Sql Server数据库中,书写存储过程时,关于查询数据,无法使用Union(All)关联多个查询. 1.先看一段正常的SQL语句,使用了Union(All)查询: SELECT ci.CustId --客户编号 , ci.CustNam --客户名称 , ci.ContactBy --联系人 , ci.Conacts --联系电话 , ci.Addr -- 联系地址 , ci.Notes --备注信息 , ai

Powerdesigner逆向工程从sql server数据库生成pdm【转】

Powerdesigner逆向工程从sql server数据库生成pdm 第一步:打开"控制面板"中的"管理工具" 第二步:点击"管理工具"然后双击"数据源(odbc)" 第三步:打开之后,点击"添加" 第四步:选择"sqlserver" 点击"完成" 第五步:跟据自身的情况填写 说明: 名称和描述可以自己命名,服务器就是你的数据库地址(下图) 第六步:填写好登录名和

Sql server存储过程中常见游标循环用法

原文:Sql server存储过程中常见游标循环用法 用游标,和WHILE可以遍历您的查询中的每一条记录并将要求的字段传给变量进行相应的处理 DECLARE @A1 VARCHAR(10), @A2 VARCHAR(10), @A3 INT DECLARE YOUCURNAME CURSOR FOR SELECT A1,A2,A3 FROM YOUTABLENAME OPEN YOUCURNAME fetch next from youcurname into @a1,@a2,@a3 while

SQL Server 存储过程(转载)

SQL Server 存储过程 Transact-SQL中的存储过程,非常类似于Java语言中的方法,它可以重复调用.当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句.这样就可以提高存储过程的性能. Ø 存储过程的概念 存储过程Procedure是一组为了完成特定功能的SQL语句集合,经编译后存储在数据库中,用户通过指定存储过程的名称并给出参数来执行. 存储过程中可以包含逻辑控制语句和数据操纵语句,它可以接受参数.输出参数.返回单个或多个结果集以及返回值. 由于存储

简单的如何创建sql server存储过程

学习sql server数据库,sql server存储过程的建立方法是一定要知道的,下面将教您如何建立sql server存储过程,希望对您有所帮助. 在对象资源管理器中,连接到某个数据库引擎实例,再展开该实例. 展开“数据库”.sql server存储过程所属的数据库以及“可编程性”. 右键单击“存储过程”,再单击“新建存储过程”. 在“查询”菜单上,单击“指定模板参数的值”. 在“指定模板参数的值”对话框中,“值”列包含参数的建议值.接受这些值或将其替换为新值,再单击“确定”. 在查询编辑