gpt4 book ai didi

sql - 根据所选数据返回不同的值

转载 作者:行者123 更新时间:2023-12-04 14:10:34 26 4
gpt4 key购买 nike

我有一个基于 id 选择行的存储过程(足够简单),但仅当数据满足一些条件时才返回实际​​结果,否则返回特定的错误代码。因此,在进行嵌套检查时,代码看起来类似于:

CREATE PROCEDURE GetStuffById
@StuffId int
AS
BEGIN
IF EXISTS (SELECT TOP 1 * FROM [Stuff] WHERE StuffId = @StuffId)
BEGIN
DECLARE @IsValid bit
SET @IsValid = (SELECT IsValid FROM [Stuff] WHERE StuffId = @StuffId)
IF @IsValid = 1
BEGIN
--More nested checks may occur here
SELECT * FROM [Stuff] WHERE StuffId = @StuffId
END
ELSE
BEGIN
RETURN -2
END
END
ELSE
BEGIN
RETURN -1
END
END

在这种方法中,我已经在同一张表上进行了 3 次选择,这似乎是多余且低效的,而另一次检查将意味着另一次选择等。是否有更好的模式来执行此操作(例如临时表)?

更新:编辑了第一次检查

最佳答案

您可以在单个选择中分配给多个变量,并使用 @@ROWCOUNT 检测是否找到了一行。

DECLARE @IsValid BIT,
@Foo INT

SELECT @IsValid = IsValid,
@Foo = Foo
FROM [Stuff]
WHERE StuffId = @StuffId

/*This must be tested immediately after the assignment statement*/
IF @@ROWCOUNT = 0
RETURN -1

IF ISNULL(@IsValid, 0) = 0
RETURN -2

SELECT @IsValid AS IsValid,
@Foo AS Foo

关于sql - 根据所选数据返回不同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8834796/

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