sql server 資料庫自動表單

來源:互聯網
上載者:User

參考   http://bbs.chinaunix.net/thread-3838790-1-1.html
--以下代碼產生的編號長度為12,前6位為日期資訊,格式為YYMMDD,後6位為流水號。
--建立得到當前日期的視圖,因為在使用者定義函數不能使用不確定函數,而getdate就是不確定函數,必須建立一個----視圖才能獲得getdate的值。
CREATE VIEW v_GetDate
AS
SELECT dt=CONVERT(CHAR(6),GETDATE(),12)
GO

--得到新編號的函數
CREATE FUNCTION f_NextBH()
RETURNS char(12)
AS
BEGIN
        DECLARE @dt CHAR(6)
        SELECT @dt=dt FROM v_GetDate
        RETURN(
                SELECT @dt+RIGHT(1000001+ISNULL(RIGHT(MAX(BH),6),0),6) 
                FROM tb WITH(XLOCK,PAGLOCK)
                WHERE BH like @dt+\'%\')
END
GO

--在表中應用函數
CREATE TABLE tb(
BH char(12) PRIMARY KEY DEFAULT dbo.f_NextBH(),
col int)

--插入資料
INSERT tb(col) VALUES(1)
INSERT tb(col) VALUES(2)
INSERT tb(col) VALUES(3)
DELETE tb WHERE col=3
INSERT tb(col) VALUES(4)
INSERT tb(BH,col) VALUES(dbo.f_NextBH(),14)

--顯示結果
SELECT * FROM tb
/*--結果
BH           col 
------------------- ----------- 
050405000001  1
050405000002  2
050405000003  4
050405000004  14
--*/
如果是8位日期 yyyymmdd格式視圖用
CREATE VIEW v_GetDate
AS
SELECT dt=CONVERT(CHAR(8),GETDATE(),112)
GO
如果還想再編號錢面加入其它特定字元標誌可以修改視圖
CREATE VIEW dbo.v_Date   
AS  
SELECT  'FF'+CONVERT(CHAR(8), GETDATE(), 112) AS dt 
‘FF’ 可以換成你想要的任何字元。此時注意下面的函數的字元個數也要增加
完整例子如下。

CREATE VIEW dbo.v_Date   
AS  
SELECT  'FF'+CONVERT(CHAR(8), GETDATE(), 112) AS dt   
GO 
//建立SQL Server資料庫中的自訂函數   
CREATE FUNCTION f_IDNumber()   
RETURNS char(16)   
AS  
BEGIN  
        DECLARE @dt CHAR(10)   
        SELECT @dt=dt FROM v_Date   
        RETURN(   
                SELECT @dt+RIGHT(1000001+ISNULL(RIGHT(MAX(Num),6),0),6)    
                FROM test_tb1  WITH(XLOCK,PAGLOCK)   
                WHERE Num like @dt+'%')   
END  
GO
--//測試表中應用自訂函數   
CREATE TABLE test_tb1(   
Num char(16) PRIMARY KEY DEFAULT dbo.f_IDNumber(),   
itype int

insert test_tb1(itype) values(2)
insert test_tb1(itype) values(3)
insert test_tb1(itype) values(4)
insert test_tb1(Num,itype) values(dbo.f_IDNumber(),12)
select * from test_tb1
--結果如下
--FF20121231000001 1
--FF20121231000002 2
--FF20121231000003 3
--FF20121231000004 4
--FF20121231000005 12

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.