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 ...
随机推荐
- linux下包管理命令yum与apt-get以及开发环境配置
一般来说市面上常见的Linux系统分为两大类: RH类:Redhat.centOS和Fedora等 Debian类:ubuntu.Debian等. 上述两类系统对应的包管理工具命令分别是yum和apt ...
- Jquery UI dialog 详解 (中文)
转载▼ 1 属性 1.11 autoOpen ,这个属性为true的时候dialog被调用的时候自动打开dialog窗口.当属性为false的时候,一开始隐藏窗口,知道.dialog("op ...
- 编译Hadoop源码
背景: 在阅读hadoop源代码过程中会发现部分类或者函数无法找到,这是由于Hadoop2.0使用了Protocol Buffers定义了RPC协议, 而这些Protocol Buffers文件在Ma ...
- JavaScript高级程序设计49.pdf
HTML5事件 contextmenu事件 contextmenu事件是冒泡的,可以将事件处理程序指定到document,这个事件的目标是用户操作的元素,在兼容DOM的浏览器中使用event.prev ...
- javascript 通过IE ActiveX 获得本机内网ip
<HTML><HEAD><TITLE>WMI Scripting HTML</TITLE> <META http-equiv=Content-Ty ...
- Python的基本语法,涵盖数据类型、循环判断、列表、map和set等
以#开头的语句是注释 当语句以冒号“:”结尾时,缩进的语句视为代码块.一般缩进4个空格 Python程序是大小写敏感的,如果写错了大小写,程序会报错. Python的数据类型 整型 浮点型 字符串 布 ...
- 搜索算法:深度优先搜索(DFS)
关于深搜的介绍,在网上有很多,不再赘述.主要以题目形式实例讲解. POJ - 1321 (http://poj.org/problem?id=1321) 题目大意:给出一个棋盘,棋子不能同行同列,求放 ...
- mongodb数据库连接池(java版)
mongodb数据库接口的设计 package storm.db; import java.util.ArrayList; import com.mongodb.DB; import com.mong ...
- linux内核数据结构--进程相关
linux里面,有一个结构体task_struct,也叫“进程描述符”的数据结构,它包含了与进程相关的所有信息,它非常复杂,每一个字段都可能与一个功能相关,所以大部分细节不在我的研究范围之内,在这篇文 ...
- 398. Random Pick Index
随机返还target值的坐标(如果存在多个target). 不太明白为什么这个题是M难度的. 无非是要么弄TABLE之类的,开始麻烦点,但是pick的时候直接PICK出来就行了. 要么开始简单点,都存 ...