我有我CaseFiles
表csfl_CaseNo
列數據號是使用存儲過程在SQL Server 2005中
00001/13-14
00002/13-14
00003/13-14
00004/13-14
00005/13-14
這裏是我的存儲過程來增加數量
ALTER PROCEDURE [dbo].[HLA_CaseNo](@strFnyr as nvarchar(5),@strSuffix as nvarchar(15) OUTPUT)
AS
BEGIN
--Declarations
declare @strSuffix1 as nvarchar(15)
declare @strTmp as nvarchar(5)
declare @intNew as int
--declare @strSql as nvarchar(2000)
set @strSuffix1 = null
--Process
begin
set @strSuffix1 = (select max(csfl_caseNo) from CaseFiles where csfl_Fynyr = @strFnyr)
--set @strPrf='QUT'
end
if @strSuffix1 is null
set @intNew = 1
else
set @intNew = cast(substring(@strSuffix1,0,5) as int) + 1
print 'The value of intNew ' + cast(@intNew as nvarchar(10))
set @strTmp = cast(@intNew as nvarchar(5))
set @strTmp = (select replicate('0',5-len(@strTmp)) + @strTmp)
set @strSuffix = @strTmp + '/' + @strFnyr
END
不增加我的任務是當我通過財政年度爲13-14
它必須返回值爲00006/13-14
,但它是ret改爲使用00002/13-14
。
爲什麼會發生這種情況?請幫助
除了現有的錯誤,你也有一個多用戶問題。當兩個不同的用戶調用這個存儲過程時,他們將被分配相同的編號。如果您使用的是SQL Server 2012,請改用「SEQUENCE」。如果您使用的是早期版本,請使用「IDENTITY」。關於你的bug,不知道'csfl_Fynyr'字段裏有什麼是沒有人能幫到的。同時,爲什麼不使用'PRINT'或'SELECT'來回顯所有的變量值並檢查它們。你可能有一個偏移錯誤或什麼的。 – 2013-05-09 04:15:41