。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