gpt4 book ai didi

嵌套存储过程中的 SQL 变量

转载 作者:行者123 更新时间:2023-12-01 05:25:45 26 4
gpt4 key购买 nike

我创建了一个存储过程,它从表中的特定列中检索最后一个值,并根据文档类型和位置将其加一。

当我单独调用这个存储过程时,它工作得很好。但是当我将它嵌套在另一个存储过程中时,该值未设置为变量 @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

所以请帮助我上述存储过程中的问题是什么以及如何解决这个问题?

最佳答案

该值很可能为 NULL,因为查询未返回任何值或返回 NULL 值。

据推测,这是因为@Document_Type 既不是“Apple”也不是“Mango”。或者,因为 location_id 不在表中。或者,因为 code最大 id 为 NULL。

尝试在调用过程时打印出参数的值。

另一种可能性是您没有将 @FinalNumber 声明为调用和定义的输出参数。

我确实认为将变量命名为“任何数字”之类的名称然后使其类型为非数字是不好的做法。但是,我不认为这会导致您的问题。

关于嵌套存储过程中的 SQL 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13957269/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com