MSSQL 生成編號 --整理帖
来源:互联网 发布:电脑椅 品牌 知乎 编辑:程序博客网 时间:2024/05/16 19:18
-->Title:得到普通流水编号的函数
-->Author:wufeng4552
-->Date :2009-10-20
if object_id('tb','U')is not null drop table tb
if exists(select * from dbo.sysobjects where id=object_id(N'[dbo].[f_GetBH]')and xtype in(N'FN', N'IF', N'TF'))
drop function [dbo].[f_GetBH]
GO
create function f_GetBH()
returns varchar(8)
as
begin
return(select right(1000001+isnull(right(max(BH),6),0),6) from tb with (xlock,paglock) )
end
go
--建表
create table tb(BH varchar(8) primary key default dbo.f_GetBH(),ID int)
insert tb(ID) select 1
insert tb(ID) select 2
insert tb(ID) select 3
delete tb where id=2
insert tb(ID) select 4
select * from tb
/*
BH ID
-------- -----------
000001 1
000003 3
000004 4
*/
-->Title:得到日期编号的函数
-->Author:wufeng4552
-->Date :2009-10-20
if object_id('tb','U')is not null drop table tb
if exists(select * from dbo.sysobjects where id=object_id(N'[dbo].[f_GetRQBH]')and xtype in(N'FN', N'IF', N'TF'))
drop function [dbo].[f_GetRQBH]
GO
create function f_GetRQBH()
returns varchar(10)
as
begin
declare @dt varchar(6)
select @dt=convert(varchar(6),getdate(),12)
return
(select @dt+right(1000001+isnull(right(max(BH),3),0),3) from tb with (xlock,paglock) where bh like @dt +'%')
end
go
--建表
create table tb(BH varchar(10) primary key default dbo.f_GetRQBH(),ID int)
insert tb(ID) select 1
insert tb(ID) select 2
insert tb(ID) select 3
delete tb where id=2
insert tb(ID) select 4
select * from tb
/*
BH ID
---------- -----------
091020001 1
091020003 3
091020004 4
*/
-->Title:使用编号表生成流水号
-->Author:wufeng4552
-->Date :2009-10-20
IF OBJECT_ID('TB_NO','U')IS NOT NULL DROP TABLE TB_NO
GO
CREATE TABLE tb_NO(
Name char(2) PRIMARY KEY, --编号种类的名称
Head nvarchar(10) NOT NULL DEFAULT '', --编号的前缀
CurrentNo int NOT NULL DEFAULT 0, --当前编号
BHLen int NOT NULL DEFAULT 6, --编号数字部分长度
DESCRIPTION NVARCHAR(50)) --编号种类说明
INSERT tb_NO SELECT 'CG','CG',0,4,N'采购订单'
UNION ALL SELECT 'CJ','CJ',0,4,N'采购进货'
UNION ALL SELECT 'JC','JC',0,4,N'进仓单'
UNION ALL SELECT 'ZC','ZC',0,4,N'转仓单'
UNION ALL SELECT 'CC','CC',0,4,N'出仓单'
GO
IF OBJECT_ID('P_NEXTBH','P')IS NOT NULL DROP PROC P_NEXTBH
GO
CREATE PROC p_NextBH
@Name char(2), --编号种类
@BH nvarchar(20) OUTPUT --新编号
AS
BEGIN TRAN
UPDATE tb_NO WITH(ROWLOCK) SET
@BH=Head+RIGHT(POWER(10,BHLen)+CurrentNo+1,BHLen),
CurrentNo=CurrentNo+1
WHERE Name=@Name
COMMIT TRAN
GO
--获取 CJ 的新编号
DECLARE @bh char(6)
EXEC p_NextBH 'CJ',@bh OUT
SELECT @bh
/*
------
CJ0001
*/
- MSSQL 生成編號 --整理帖
- MSSQL 生成編號 --整理帖
- MSSQL自增列重複與不連續--整理帖
- MSSQL求中位數-常見解決方案-整理帖
- MSSQL求中位數-常見解決方案-整理帖
- MSSQL学习资料整理
- MSSQL学习资料整理
- MSSQL学习资料整理
- MSSQL语法整理
- 整理mssql导入大全
- MSSQL基础整理二
- MSSQL扩展存储过程 master.dbo.xp_sqlagent_enum_jobs--整理帖
- MSSQL扩展存储过程 master.dbo.xp_sqlagent_enum_jobs--整理帖
- 生成MSSQL数据库日历
- MSSQL生成日期列表
- MSSQL 小整理 适合新手
- MSSQL英儿版基础整理一
- MSSQL英儿版基础整理二
- inux 系统内核空间与用户空间通信的实现与分析
- 经典
- 笑死你,别怪我!
- Meta的http-equiv属性详解
- 禁止WebBrowser控件弹出对话框
- MSSQL 生成編號 --整理帖
- java.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit(IILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava
- Jinx的win7之旅
- 买菜总结之二--荤菜篇
- 【zt】PhotoShop制作一寸照/相片
- 在 Linux 下用户空间与内核空间数据交换的方式,第 1 部分: 内核启动参数、模块参数与sysfs、sysctl、系统调用和netlink
- C++中需要创建拷贝构造函数吗?
- 买菜总结之三--水果篇
- 买菜总结之四-主食篇