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 ...
随机推荐
- WordPress Sharebar ‘page’参数跨站脚本漏洞
漏洞名称: WordPress Sharebar ‘page’参数跨站脚本漏洞 CNNVD编号: CNNVD-201309-468 发布时间: 2013-09-26 更新时间: 2013-09-26 ...
- 用户故事(User Story)
摘要: 一件用户通过系统完成他一个有价值的目标(买一罐饮料)的事.这样的过程就叫“用户案例(user case)”或者“用户故事(user story)”.本文描述了敏捷开发的技巧:如何以用户故事管理 ...
- [CODEVS1220]数字三角形
题目描述 Description 如图所示的数字三角形,从顶部出发,在每一结点可以选择向左走或得向右走,一直走到底层,要求找出一条路径,使路径上的值最大. 输入描述 Input Description ...
- opencv Installation in Linux and hello world
http://opencv.org/quickstart.html Installation in Linux These steps have been tested for Ubuntu 10.0 ...
- JSON AND BSON
JSON JavaScript Object Notation (JSON) is an open, human and machine-readable standard that facilita ...
- Android应用开发学习之Selector
作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz 本文我们来看一个通过selector动态改变ImageButton背景图片的例子,下图是该程序的运行效果: 该程序中 ...
- MD5是什么,怎么用着怪怪的
写作目的 通常我们在使用加密算法时,都是直接调用一个方法,比如Base64,直接把待加密的字符串给加密好了.对于某些使用公私钥的算法,最多再传入一段公钥即可.但是在使用MD5算法的时候,总是需要用到一 ...
- 【Java】通过DES加密和解密工具,对字符串进行加密和解密操作
分享一个非常不错的字符串加密和解密的程序. 可以指定不同的密钥对同一字符串进行不同的加密操作,增强加密性能. Java代码如下: package com.app; import java.securi ...
- richTextBoxFontClass
使用 private void button1_Click(object sender, EventArgs e) { RichTextBoxCtrl.richTextBoxFontClass r = ...
- richTextBoxBulletClass
设置和获取选中的样式为 1. 2. 3. #region 数字序列 1. 2. 3. 4. 5. ... private bool bOrder = false; public bool Select ...