システムは、ドキュメントストアドプロシージャの数を生成します

。PROCEDURE [DBO] [GeneralDocumentNoByBatch] CREATE
    @preFixはnvarchar(256)、@ジェナムINT、@アウトコードVARCHAR(256)の出力を
AS
BEGIN
    - SET NOCOUNT ONから余分な結果セットを防ぐために添加
    SELECT文を妨害- 。
    月のvarchar型@ @docNoはnvarchar(256)、(10)を宣言し、@日はvarchar(10)、
    @no VARCHAR(10)、@ NUM int型、@ lenNum int型、@ SQLのデータ型はnvarchar(4000)
    は、@ maxCodeのVARCHAR(256) 、@のTableName VARCHAR(256)
    SET NOCOUNT ON。
    @tablename = '' DocumentNo ''を設定します。
    セット@月= CAST(varchar型として月(GETDATE()));
    (VARCHARとして日(GETDATE()))@day設定= CAST。
    (LEN(@month)= 1)= '' 0 '' + @月@month設定している場合。
    (LEN(@day)= 1)@day = '0' + @日に設定した場合、
    - WITH(XLOCK、PAGLOCK)    
    @docNo = @ PREFIX +キャスト(YEAR varchar型として(GETDATE()))+ @月+ @日に設定。    
    @preFixは= '' WV ''または@preFix = ''、SR ''または@preFix = '' SA 'であれば
    '' + @ tableNameの+ 'からP =コード' @設定@sql = N''selectトップ1 (HOLDLOCK、TABLOCKX)CHARINDEXここWITH = IDのDESC ''によって1つのオーダー( '' ' '' ''コード、 ''' '+ @接頭辞+')。    
    他の
    CHARINDEXは( '' '' '' + @ docNo + '' ' '''(HOLDLOCK、TABLOCKX)WITH '+ @ tableNameの+'からP =コード、コード@ @sql = N''selectトップ1を設定します)=のID DESCによって1つのオーダー''。    
    EXEC sp_executesqlをする@ SQL、N '' @ PはVARCHAR(256)出力''、@ P = @ maxCode出力。
    (@maxCodeがヌルである)場合に
    開始
        = '0001「」@noセット。    
    終わり;
    他の
    開始
        @preFix = '' WV ''または@preFix = ''、SR ''または@preFix = '' SA ''は場合
            maxCode @、LEN(@preFix)+ 1、LEN(NO = CAST((CAST(SUBSTRING @設定しますVARCHARとしてintとして(@maxCode)))))。
        他の
        設定@ = NO CAST((CAST(SUBSTRING(@ maxCode、LEN(@docNo)+ 1、LEN VARCHARとしてintとして(@maxCode)))))。        
    終わり;
    @no --print
    @tmptableテーブル(プレフィックスはvarchar(20)、コードVARCHAR(50))を宣言
    -设定流水号位数
    = 4 @numセット。
    @iは、INT宣言
    セット@ I = 0
    @iが<@GenNumながら
    始める
    @ = NO鋳造(キャスト(@no +1)intとしてVARCHARは(10)のように)を設定
        (@no)= LENを@lennum設定します。
        --print @lennum
        @lenNumながら、<@num
        開始
            セット@ lenNum = @ lenNum + 1;
            '+ @無@no = '' 0'を設定。    
        エンド        
    
    I = @ I + 1 @セット
    @preFix = '' WV ''または@preFix = '' SR ''または@preFix = '' SA ''場合は
    なし@ @tmptable選択@プレフィックス挿入、@プレフィックス+
    他の
    挿入@tmptable選択@プレフィックス、@ docNo + @なしに
    終了。
    
    documentnoに挿入(プレフィックス、コード)@tmptableからプレフィックス、コードを選択します。
    --select @ docNo + @なし。
    -返回最大的流水号    
    場合@preFix = '' WVは''
    + @ no 'を@outCodeは= '' W'に設定します。
    他の
    ノーアウトコード= @ docNo + @ @設定します。
    @tmptableからプレフィックス、コードを--select
END

 

CREATE PROCEDURE [DBO] [GeneralDocumentNo]。
    @preFix NVARCHAR(256)は、@アウトコードのVARCHAR(256)出力
AS
BEGIN
    - SET NOCOUNT ONから余分な結果セットを防ぐために添加
    SELECT文を妨害- 。
    月のvarchar型@ @docNoはnvarchar(256)、(10)を宣言し、@日はvarchar(10)、
    @no VARCHAR(10)、@ NUM int型、@ lenNum int型、@ SQLのデータ型はnvarchar(4000)
    は、@ maxCodeのVARCHAR(256) 、@のTableName VARCHAR(256)
    SET NOCOUNT ON。
    @tablename = '' DocumentNo ''を設定します。
    セット@月= CAST(varchar型として月(GETDATE()));
    (VARCHARとして日(GETDATE()))@day設定= CAST。
    (LEN(@month)= 1)= '' 0 '' + @月@month設定している場合。
    (LEN(@day)= 1)@day = '0' + @日に設定した場合、
    
    設定@docNo = @ PREFIX +キャスト(YEAR(GETDATE())varchar型など)+ @月+ @日。    
    @preFixは= '' WV ''は場合
    (HOLDLOCK、TABLOCKX)CHARINDEX( '' '' '' + @接頭辞+ WITH '' + @ tableNameの+ 'からP =コード' @ @sql = N''selectトップ1を設定します「」「「」」「)、コードを識別DESCによって1つの注文を=」。    
    他の
    CHARINDEXは( '' '' '' + @ docNo + '' ' '''(HOLDLOCK、TABLOCKX)WITH '+ @ tableNameの+'からP =コード、コード@ @sql = N''selectトップ1を設定します)=のID DESCによって1つのオーダー''。    
    EXEC sp_executesqlをする@ SQL、N '' @ PはVARCHAR(256)出力''、@ P = @ maxCode出力。
    (@maxCodeがヌルである)場合に
    開始
        = '0001「」@noセット。    
    終わり;
    他に
    始める
        場合@preFix =「」WV「」
            セット@ = NO CAST((CAST(SUBSTRING(@ maxCode、LEN(@preFix)+ 1、LEN VARCHARとしてintとして(@maxCode)))+1))。
        他の
            設定@ = NO CAST((CAST(SUBSTRING(@ maxCode、LEN(@docNo)+ 1、LEN VARCHARとしてintとして(@maxCode)))+1))。    
    終わり;
    
    @lennum設定= LEN(@no)。
    = 4 @num設定します。
    @lenNum <4ながら
    始める
    設定@ lenNum = @ lenNum + 1。
    '+ @無@no = '' 0'を設定。
    エンド
    @preFixは= '' WV ''なら
    開始
    documentnoにインサート(プレフィックスコード)の値(NO @接頭辞、@接頭+)。
    + @ no 'を@outCode = '' W'に設定。
    終了
    他
    始める
    (@ docNo + @なし、接頭辞@)documentnoに(プレフィックス、コード)の値を挿入します。

    ノーアウトコード= @ docNo + @ @設定します。
    エンド
END

おすすめ

転載: www.cnblogs.com/lionking/p/11619892.html