中国教育在线 中国教育网 加入收藏 设为首页

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

推荐给好友    我要收藏    我要纠错    分享到

免责声明:

① 凡本站注明“稿件来源:中国教育在线”的所有文字、图片和音视频稿件,版权均属本网所有,任何媒体、网站或个人未经本网协议授权不得转载、链接、转贴或以其他方式复制发表。已经本站协议授权的媒体、网站,在下载使用时必须注明“稿件来源:中国教育在线”,违者本站将依法追究责任。

② 本站注明稿件来源为其他媒体的文/图等稿件均为转载稿,本站转载出于非商业性的教育和科研之目的,并不意味着赞同其观点或证实其内容的真实性。如转载稿涉及版权等问题,请作者在两周内速来电或来函联系。

内容推荐
eol.cn简介 | 联系方式 | 网站声明 | 京ICP证140769号 | 京ICP备12045350号 | 京公网安备 11010802020236号
版权所有 北京中教双元科技集团有限公司 EOL Corporation
Mail to: webmaster@eol.cn