MSSQL 生成有意义的PROC
MSSQL 生成有意义的PROC
--MSSQL 用PROC 生成有意义的单号:如WP200011101
GO
/****** 对象: Table [dbo].[tbl_SequenceNum] 脚本日期: 01/20/2011 10:13:00 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[tbl_SequenceNum](
[ID] [uniqueidentifier] ROWGUIDCOL NOT NULL CONSTRAINT [DF_CM_SequenceNumber_ID] DEFAULT (newid()),
[SequenceNumTypeCode] [nvarchar](20) COLLATE Chinese_PRC_CI_AS NOT NULL,
[CurrNumber] [int] NOT NULL,
CONSTRAINT [PK_CM_SequenceNumber] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'主键' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tbl_SequenceNum', @level2type=N'COLUMN',@level2name=N'ID'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'生成序列号的类型(CHG,SRV,CHW)' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tbl_SequenceNum', @level2type=N'COLUMN',@level2name=N'SequenceNumTypeCode'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'当前流水号' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tbl_SequenceNum', @level2type=N'COLUMN',@level2name=N'CurrNumber'
GO
GO
/****** 对象: Table [dbo].[tbl_SequenceNumType] 脚本日期: 01/20/2011 10:15:21 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[tbl_SequenceNumType](
[SequenceNumTypeCode] [nvarchar](20) COLLATE Chinese_PRC_CI_AS NOT NULL,
[SequenceNumTypeName] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NOT NULL,
[IncreaseLength] [int] NOT NULL,
[Prefix] [nvarchar](10) COLLATE Chinese_PRC_CI_AS NOT NULL,
[initNum] [int] NOT NULL,
[Length] [int] NULL,
CONSTRAINT [PK_tbl_SequenceNumType] PRIMARY KEY CLUSTERED
(
[SequenceNumTypeCode] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'生成序列号的类型(CHG,SRV,CHW)' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tbl_SequenceNumType', @level2type=N'COLUMN',@level2name=N'SequenceNumTypeCode'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'生成流水号类型的名称' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tbl_SequenceNumType', @level2type=N'COLUMN',@level2name=N'SequenceNumTypeName'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'流水号自增量' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tbl_SequenceNumType', @level2type=N'COLUMN',@level2name=N'IncreaseLength'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'流水号前缀' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tbl_SequenceNumType', @level2type=N'COLUMN',@level2name=N'Prefix'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'流水号初始值' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tbl_SequenceNumType', @level2type=N'COLUMN',@level2name=N'initNum'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'生成ID除字母前缀外的总长度' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tbl_SequenceNumType', @level2type=N'COLUMN',@level2name=N'Length'
GO
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
ALTER FUNCTION [dbo].[ufn_getSpecialTypeID]
(@SequenceNumTypeCode nvarchar(20))
RETURNS nvarchar(20)
AS
BEGIN
DECLARE @returnValue nvarchar(20)
DECLARE @CurrNumber int
DECLARE @IncreaseLength int
DECLARE @initNum int
DECLARE @Prefix varchar(10)
DECLARE @Length int
SET @CurrNumber = 0
SELECT @IncreaseLength = IncreaseLength,
@initNum = initNum,
@Prefix = Prefix,
@Length = Length
FROM tbl_SequenceNumType
WHERE SequenceNumTypeCode = @SequenceNumTypeCode
SELECT @CurrNumber = CurrNumber
FROM tbl_SequenceNum
WHERE SequenceNumTypeCode = @SequenceNumTypeCode
IF @CurrNumber = 0
SET @CurrNumber = @initNum
SET @CurrNumber = @CurrNumber + @IncreaseLength
SET @returnValue = '00000000' + CONVERT(nvarchar(10), @CurrNumber)
SET @returnValue = RIGHT(@returnValue, @Length)
SET @returnValue = @Prefix + CONVERT(nvarchar(20),@returnValue)
RETURN @returnValue
END
GO
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
ALTER PROCEDURE [dbo].[usp_WO_UpdateCurrNumBySequenceNumTypeCode]
@SequenceNumTypeCode nvarchar(20)
AS
SET NOCOUNT ON
DECLARE @CurrNumber nvarchar(20)
DECLARE @Prefix varchar(10)
SELECT @Prefix = Prefix
FROM tbl_SequenceNumType
WHERE SequenceNumTypeCode = @SequenceNumTypeCode
SET @CurrNumber = dbo.ufn_getSpecialTypeCurrNum(@SequenceNumTypeCode)
IF EXISTS(SELECT 1 FROM tbl_SequenceNum WHERE SequenceNumTypeCode = @SequenceNumTypeCode)
BEGIN
--UPDATE
UPDATE tbl_SequenceNum
SET CurrNumber = @CurrNumber
WHERE SequenceNumTypeCode = @SequenceNumTypeCode
END
ELSE
BEGIN
--INSERT
INSERT INTO tbl_SequenceNum
(
ID,
SequenceNumTypeCode,
CurrNumber
)
VALUES
(
NEWID(),
@SequenceNumTypeCode,
@CurrNumber
)
END
SET NOCOUNT OFF
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
ALTER FUNCTION [dbo].[ufn_IsID]
(@Param nvarchar(50), @Prefix nchar(3))
RETURNS bit
AS
/*
返回 1是数字 0不是数字
*/
BEGIN
DECLARE @IsID bit
SET @IsID = 0
IF LEN(@Param) = LEN(@Prefix) + 9
BEGIN
IF ISNUMERIC(RIGHT(@Param, LEN(@Param) - LEN(@Prefix))) = 1 AND LEFT(@Param, LEN(@Prefix)) = @Prefix
BEGIN
SET @IsID = 1
END
END
ELSE
BEGIN
IF ISNUMERIC(@Param) = 1
BEGIN
SET @IsID = 1
END
END
RETURN @IsID
END
GO
--具体事例
--生成文件编号
DECLARE @DocNo NVARCHAR(100)
DECLARE @SequenceNumTypeCode_Req nchar(4)
SET @SequenceNumTypeCode_Req = 'DOC'
SET @DocNo = dbo.ufn_getSpecialTypeID(@SequenceNumTypeCode_Req)
EXEC usp_WO_UpdateCurrNumBySequenceNumTypeCode @SequenceNumTypeCode = @SequenceNumTypeCode_Req
GO
MSSQL 生成有意义的PROC的更多相关文章
- MSSQL 生成拼音码
MSSQL 生成拼音码 /*============================================================================== 名称:fn_G ...
- .Net Core开源小工具mssql2mysql,从mssql生成mysql脚本
Microsoft SQL Server to MySQL 这个工具用于从MSSQL生成MySQL脚本,生成的脚本包含表结构和数据 安装 这是一个.Net Core的具具,所以需要先安装.net co ...
- MSSQL生成整个数据库的SQL脚本的工具 scptxfr.exe
scptxfr.exe的路径要正确declare @cMd varchar(1000)set @cmd = 'master.dbo.xp_cmdshell ' + '''c:\"Micros ...
- -----------MSSQL生成流水号-----------------------
--下面的代码生成长度为8的编号,编号以BH开头,其余6位为流水号.--得到新编号的函数CREATE FUNCTION f_NextBH()RETURNS char(8)ASBEGIN RETURN( ...
- MSSQL 生成唯一自增数据的办法
我的应用场景是多进程并发获取这个计数,且要保证唯一且自增,我用的办法是锁表 计数表Counter,就一行数据 下面是存储过程 create procedure [dbo].[GetCount] AS ...
- 如何将sqlserver表中的数据导出sql语句或生成insert into语句 [转]
输入表名,生成插入语句 drop proc proc_insert //如果存在就删除 go create proc proc_insert (@tablename varchar(256)) as ...
- 使用linux perf工具生成java程序火焰图
pre.cjk { font-family: "Nimbus Mono L", monospace } p { margin-bottom: 0.1in; line-height: ...
- Linux中/etc/fstab /etc/mtab /proc/mounts这三个文件的分析与比较 分区表位置
本文主要讲解Linux中/etc/fstab /etc/mtab /proc/mounts这三个文件的作用以及不同之处. 转自http://haohaozhang.blog.51cto.com/917 ...
- Linux中 /proc/[pid] 目录各文件简析
Linux 内核提供了一种通过 proc 文件系统,在运行时访问内核内部数据结构.改变内核设置的机制.proc 文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间.它以文件系统的方式为访问系 ...
随机推荐
- 【iOS与EV3混合机器人编程一系列五个】iOS_WiFi_EV3_Library 解剖连接EV3
在上一篇文章中.我们解说了怎样用开源码库CocoaAsyncSocket来实现iOS上的UDP和TCP数据通信.那么在本文中.我们将介绍在CocoaAsyncSocket的基础怎样使用UDP和TCP连 ...
- DHTML【1】
什么是DHTML呢?英文全称(Dynamic Hypertext Markup Language),即动态超文本标记语言,DHTML不是一个独立的新技术,而是多种技术的综合,它能使HTML变的更 ...
- IIS rewrite映射规则语法格式
IIS rewrite映射规则语法格式,特殊符号:&请用& amp;代替,否则异常. <configuration> <system.webServer> &l ...
- Target runtime Apache Tomcat v6.0 is not defined. phyy Unknown Faceted Project Problem
Description Resource Path Location TypeTarget runtime Apache Tomcat v6.0 is not defined. phyy Unknow ...
- UVA 11770 Lighting Away
RunID User Problem Result Memory Time Language Length Submit Time 2482977 zhyfzy J Accepted 0 KB 138 ...
- js中如何把字符串转化为对象
例如 [javascript] var test='{ colkey: "col", colsinfo: "NameList" }' var ...
- sqlserver2012 评估期已过问题处理
由于之前安装sqlserver2012忘记输入序列号,现在出现评估期已过的问题,网上忙活半天,才解决,发现网上叙述都很凌乱,而且只有大意,新手很难操作,所以把我操作的过程分享给大家 1 开始菜单找到s ...
- icon font
简而言之,就是: 使用 特殊字符 + (使用@font-face)自定义的字体 来代替图片文件显示图标. 关于@font-face, 参考来自W3CPLUS 的详细解释: css3 @font-fac ...
- (function(){})(jQuery)的功能和用途?
1.为什么开发插件都这么写? 2.为什么要穿jQuery进去?在方法中直接用jquery的方法什么的不行吗? 1 首先(function(){})()这种写法 是创建了一个匿名的方法并立即执行(fun ...
- idhttp post 上传或下载时显示进度条
通过 idhttp 带进度条上传演示一下,下载和上传原理差不多,说明一下下面例子中的的idhttp 是动态创建的 第一步:添加一个StatusBar或者gauge 进度条,这2个都可以.我用的是 st ...