Oracle认证:获取单据编号存储过程示例
http://itpx.eol.cn 来源: 作者:网络转载 2011-09-14 大 中 小
CREATE TABLE [dbo].[BillNo](
[Id] [int] IDENTITY(1,1) NOT NULL,
[BillName] [varchar](20) COLLATE Chinese_PRC_CI_AS NOT NULL,
[MaxNo] [int] NULL,
[MaxDate] [varchar](20) COLLATE Chinese_PRC_CI_AS NULL,
[Prefix] [varchar](20) COLLATE Chinese_PRC_CI_AS NULL,
[NumBit] [int] NULL CONSTRAINT [DF_BillNo_NumBit] DEFAULT ((0)),
[Style] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
[Memo] [text] COLLATE Chinese_PRC_CI_AS NULL,
[CreateDate] [datetime] NULL CONSTRAINT [DF_BillNo_CreateDate] DEFAULT (getdate()),
[EditDate] [datetime] NULL,
[State] [int] NULL CONSTRAINT [DF_BillNo_State] DEFAULT ((0)),
CONSTRAINT [PK_BillNo] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
CREATE PROCEDURE [dbo].[p_GetBillNo] ——产生按年月日排列的档案号
@BillName varchar(20),
@No varchar(20) output, ——为产生的档案号
@NumBit int = 4 ——编号位数
AS
DECLARE @MaxNo int,
@MaxDate varchar(20),
@Prefix varchar(20),
@xNumBit int,
@CurrDate varchar(12),
@FILL_ZERO int,
@iMaxNo int
SET @FILL_ZERO = 100000000
SET @CurrDate = CONVERT(VARCHAR(8), GETDATE(),112)
SELECT @MaxNo = MaxNo, @MaxDate = MaxDate, @Prefix = Prefix,
@xNumBit = NumBit FROM BillNo WITH(XLOCK) WHERE BillName = @BillName
IF @@ROWCOUNT <> 1 RETURN -1
IF @xNumBit <> 0 SET @NumBit = @xNumBit
IF @MaxDate <> @CurrDate OR @MaxDate IS NULL OR @MaxNo IS NULL
SET @iMaxNo = 1
ELSE
SET @iMaxNo = @MaxNo + 1
UPDATE BillNo
SET MaxNo = @iMaxNo, MaxDate = @CurrDate, EditDate = GetDate()
WHERE BillName = @BillName
IF @@ROWCOUNT <> 1 RETURN -1
SET @No = COALESCE(@Prefix, '') + @CurrDate + RIGHT(CAST(@FILL_ZERO + @iMaxNo AS
VARCHAR), @NumBit)
RETURN 1
免责声明:
① 凡本站注明“稿件来源:中国教育在线”的所有文字、图片和音视频稿件,版权均属本网所有,任何媒体、网站或个人未经本网协议授权不得转载、链接、转贴或以其他方式复制发表。已经本站协议授权的媒体、网站,在下载使用时必须注明“稿件来源:中国教育在线”,违者本站将依法追究责任。
② 本站注明稿件来源为其他媒体的文/图等稿件均为转载稿,本站转载出于非商业性的教育和科研之目的,并不意味着赞同其观点或证实其内容的真实性。如转载稿涉及版权等问题,请作者在两周内速来电或来函联系。