我已經創建了一個存儲過程,它從表中特定列中檢索最後一個值,並根據文檔和位置的類型將其加1。嵌套存儲過程中的SQL變量
當我單獨調用此存儲過程時,它完美地工作。但是,當我將它嵌套在另一個存儲過程中時,該值未設置爲變量@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
所以,請幫我有什麼問題,在上面的存儲過程,以及如何解決這個問題?
*** SQL ***只是*結構化查詢語言* - 許多數據庫系統使用的語言,但不是數據庫產品......很多東西都是特定於供應商的 - 所以我們真的需要知道什麼* *你正在使用的數據庫系統**(和哪個版本).... –
因此,你的'@ TempLastGeneratedNumber'的類型是'varchar(max)' - 然後你添加一個呢? '設置@FinalNumber = @TempLastGeneratedNumber + 1' - 這應該如何工作? –
但我沒有得到TempLastGeneratedNumber的初始值,我從表中檢索它。選擇top(1)@TempLastGeneratedNumber =來自Apple_Details_tbl的代碼 – Uvraj