Sql产生自动增长的编号
GO
/****** Object: StoredProcedure [dbo].[sp_GetNo] Script Date: 10/24/2013 19:26:44 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Author, XiaoPan.Gong>
-- Create date: <Create Date, 2013-10-23>
-- Description: <Description, Upload Special Event Amout>
-- =============================================
/* 第一
CREATE TABLE [dbo].[T_Saler](
[Id] [int] IDENTITY(1,1) NOT NULL,
[SO_No] [nvarchar](50) NULL,
[Name] [nvarchar](50) NULL,
[Sale_Num] [int] NULL,
[Remark] [nvarchar](max) NULL
)
--执行
Declare @Get_No nvarchar(50)
SONO2013102400000001
*/
ALTER PROCEDURE [dbo].[sp_GetNo]
(
@table_name nvarchar(50),--表名
@field nvarchar(50),--字段名
@left int,--左边截取的长度
@right int,--右边截取的长度
@split nvarchar(10),--编号其实字母或字符串
@return_no nvarchar(50) output --返回的编号
)
AS
BEGIN
Declare @sql nvarchar(MAX)
Declare @rightnum int
Declare @splitstr nvarchar(50)
Declare @rightstr nvarchar(10)
Declare @rightint int
Declare @tbno nvarchar(50)
Set @rightint=@right
Set @rightstr=''
while @rightint>0
begin
Set @rightstr=@rightstr+'0'
Set @rightint=@rightint-1
end
Set @splitstr=@split+CONVERT(nvarchar,GETDATE(),112)
Set @sql='select @rightnum=MAX(Convert(int,right(Convert(nvarchar,isnull('+@field+',0)),'+Convert(nvarchar,@right)+'))) from '
+@table_name+' where left('+@field+','+Convert(nvarchar,@left)+')='+''''+@splitstr+''''
EXEC SP_EXECUTESQL @sql, N'@rightnum int OUTPUT', @rightnum OUTPUT
if @rightnum is null
begin
Set @rightnum=0
end
Declare @rightlen int
Declare @rightlenght int
Set @rightlen=LEN(Convert(nvarchar,@rightnum))
if @rightlen=@rightlenght
begin
Set @tbno=RIGHT(@rightstr,@right-@rightlen)+Convert(nvarchar,@rightnum)
end
else
begin
Set @tbno=RIGHT(@rightstr,@right-@rightlenght)+Convert(nvarchar,@rightnum)
end
Set @return_no=@splitstr+ISNULL(@tbno,LEFT(@rightstr,@right-1)+'1')
select @return_no AS Return_No
END
SET ANSI_NULLS OFF
Sql产生自动增长的编号的更多相关文章
- Sql 重置自动增长列
Sql 重置自动增长列: dbcc checkident(表名, reseed, 0) 使用的情况,一般出现在主外键关联表,导致无法 truncate 只能delete的情况. 此时我们可能会需要重置 ...
- SQL Server 自动增长过大
一.背景 我们遇到的问题如下图所示:自动增长无端端就按照这样的比例进行增长: (Figure1:问题所在) 尝试使用SSMS修改自动增长值,就会出现下面的错误: (Figure2:错误信息) 遇到上面 ...
- sql添加自动增长列
alter table a add num int identity
- 《SQL Server企业级平台管理实践》读书笔记——SQL Server如何设置自动增长和自动收缩项
SQL Server允许用户设置数据库初始值和最大值,可以通过自动增长或者自动收缩进行配置.通过这些配置,我们可以防止数据库空间问题而导致的应用程序修改失败或者SQL Server磁盘空间耗尽的事情发 ...
- Sql Server 主键由字母数字组成并按照数字自动增长
在SQL SERVER 中如果我们想要使主键按照一定规则自动增长我们可以这样做: 这里我们新建一张研究表,里面有研究ID,研究人员姓名和研究医院. 我们使SicentificId 设为主键 并且从1开 ...
- [转载]C#中使用ADO.NET连接SQL Server数据库,自动增长字段用作主键,处理事务时的基本方法
问题描述: 假设在数据库中存在以下两张数据表: User表,存放用户的基本信息,基本结构如下所示: 类型 说明 ID_User int 自动增长字段,用作该表的主键 UserName varcha ...
- 使用sql语句创建修改SQL Server标识列(即自动增长列)
一.标识列的定义以及特点SQL Server中的标识列又称标识符列,习惯上又叫自增列.该种列具有以下三种特点:1.列的数据类型为不带小数的数值类型2.在进行插入(Insert)操作时,该列的值是由系统 ...
- SQL Server 2012 自动增长列,值跳跃问题
介绍 从 SQL Server 2012 版本开始, 当SQL Server 实例重启之后,表格的自动增长列的值会发生跳跃,而具体的跳跃值的大小是根据增长列的数据类型而定的.如果数据类型是 整型(in ...
- SQL获取刚插入的记录的自动增长列ID的值
假设表结构如下: CREATE TABLE TestTable ( id int identity, CreatedDate datetime ) SQL2005获得新增行的自动增长列的语句如下: i ...
随机推荐
- 总结@ 在C# 中的用法
一 字符串中的用法 1.地球人都知道 C# 中 字符串常量可以以 @ 开头声名,这样的优点是转义序列“不”被处理,按“原样”输出,即我们不需要对转义字符加上 \ (反斜扛),就可以轻松coding.如 ...
- Java NIO原理及实例
Java NIO是在jdk1.4开始使用的,它既可以说成“新I/O”,也可以说成非阻塞式I/O.下面是java NIO的工作原理: 1. 由一个专门的线程来处理所有的 IO 事件,并负责分发. 2. ...
- ELK之topbeat部署
topbeat定期收集系统信息如每个进程信息.负载.内存.磁盘等等,然后将数据发送到elasticsearch进行索引,最后通过kibana进行展示. 下面是具体的安装及配置步骤: 1.安装topbe ...
- 【转】从QA到EP
从QA到EP 两三年以前,和友人谈到 QA(软件质量保证) 这个行业,还有 QA 这个团队的未来,就有了一丝忧虑.而现在,终于有机会实践一下自己之前的想法,在这里分享给大家. 从我有限的从业经验到现在 ...
- [App]Xamarin First(Or Last One) App
这个应用简单得无以复加,主要是熟悉了使用Xamarin Studio进行Android开发的配置和基本流程. 以前未曾具体得做过App开发,现在大致了解了开发所包含的基本元素. 如上图,在Layout ...
- glsl-UBO
UBO 是什么?为何要用UBO? 1.数据共享设计 采用Block的原因是: 如果你的程序中包含了多个着色器,而且这些着色器使用了相同的Uniform变量,你就不得不为每个着色器分别管理这些变量.Un ...
- Bzoj 1036: [ZJOI2008]树的统计Count 树链剖分,LCT
1036: [ZJOI2008]树的统计Count Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 11102 Solved: 4490[Submit ...
- [LeetCode] 3. Longest Substring Without Repeating Characters 解题思路
Given a string, find the length of the longest substring without repeating characters. For example, ...
- GRUB损坏后,如何修复windows启动mbr
今天使用Ghost装系统遇到windows7不能启动的问题,采用下面帖子中的部分命令搞定之. 我自己是直接使用: 插入windows7安装光盘,从光盘启动,在光盘启动完成后,按下shift+f10键, ...
- Area - POJ 1654(求多边形面积)
题目大意:从原点开始,1-4分别代表,向右下走,向右走,向右上走,向下走,5代表回到原点,6-9代表,向上走,向左下走,向左走,向左上走.求出最后的多边形面积. 分析:这个多边形面积很明显是不规则的, ...