テーブルの特定の列から最後の値を取得し、ドキュメントの種類と場所に基づいて値を 1 ずつ増やすストアド プロシージャを作成しました。
このストアド プロシージャを単独で呼び出すと、完全に機能します。しかし、別のストアド プロシージャにネストすると、値が variable に設定されません@TempLastGeneratedNumber
。別のプロシージャ内でストアド プロシージャを呼び出したときに、その値を出力@TempLastGeneratedNumber
すると空になります。
しかし、ストアド プロシージャを単独で呼び出すと、正しい値が得られます。
これは私のストアドプロシージャです
Create Procedure [GenerateDocumentNo]
@Document_Type varchar(max) = null,
@Location_Id int = null
@FinalNumber varchar(max) = null output
as
begin try
begin tran
Declare @TempLastGeneratedNumber varchar(max)
if (@Document_Type = 'Apple')
BEGIN
Select top(1) @TempLastGeneratedNumber = Code from Apple_Details_tbl where Location_Id = @Location_Id order by Id desc
END
else if (@Document_Type = 'Mango')
BEGIN
Select top(1) @TempLastGeneratedNumber = Code from Mango_Details_tbl where Location_Id = @Location_Id order by Id desc
END
if(@TempLastGeneratedNumber is not null or @TempLastGeneratedNumber != '')
BEGIN
Set @FinalNumber = @TempLastGeneratedNumber + 1
END
commit tran
end try
begin catch
PRINT ERROR_MESSAGE()
if
end catch
上記のストアドプロシージャの問題と、これを解決する方法を教えてください。