• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 自動生成編號的方法

    發表于:2007-06-30來源:作者:點擊數: 標簽:
    前言: 用過許多序號的方法,indentity 或 new id() ,都不好用,自己寫了一個,這個序號的特點是:每次取相應表中的系統當天最大序號,如果當天無記錄,則自動生成一個當天序號 1.建種子表,這個表用來保存各個表目前已使用到的最大序號 --種子表 create table SEED (
    前言:
    用過許多序號的方法,indentity 或 new id() ,都不好用,自己寫了一個,這個序號的特點是:每次取相應表中的系統當天最大序號,如果當天無記錄,則自動生成一個當天序號

    1.建種子表,這個表用來保存各個表目前已使用到的最大序號
    --種子表
    create table SEED (
    BM varchar(20) not null, --表名
    BH varchar(12) not null, --種子編號
    constraint PK_SEED primary key(BM)
    )
    go

    2.當我們建一個新表時,同時把這個表名記錄到種子表中,如:
    --向種子中表添加記錄
    insert into SEED (BM,BH) values(‘’tablename‘’,‘’200211070000‘’)
    go

    3.在數據庫建一存儲過程,自動生成新編號,此編號取當天時間,所以許多時候查詢某些天的記錄時,這個序號非常有用
    --為參數傳遞來的某個表自動生成編號
    if exists (select * from sysobjects where name=‘’proc_getbh‘’)
    drop procedure proc_getbh
    go
    create procedure proc_getbh @BM varchar(20)
    as
    declare @BH char(12)
    declare @TODAY char(8)
    begin
    select @TODAY=convert(char(8),getdate(),112)
    select @BH=BH from SEED where BM=@BM
    if @BH is null or left(@BH,8)<>@TODAY
    begin
    select @BH=@TODAY+‘’0000‘’
    end
    select @BH=left(@BH,8)+ right(‘’0000‘’ + ltrim(convert(char(4),convert(int,right(@BH,4)))+1),4)
    update SEED set BH=@BH where BM=@BM
    select @BH AS BH
    end

    4.實例如下:
    ‘’對表xxx自動生成新編號
    set rs=conn.execute("proc_getbh @BM=‘’xxx‘’")
    這樣,rs("BH")就是你得到的新編號

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>