gpt4 book ai didi

sql - 检查@@rowcount函数来确定行是否存在可以吗?

转载 作者:行者123 更新时间:2023-12-03 01:49:34 31 4
gpt4 key购买 nike

我正在浏览我们的代码库并看到很多这样的测试:

declare @row_id int = ...
declare @row_attribute string

select
@row_attribute = ROW_ATTRIBUTE
from
SOME_TABLE
where
ROW_ID = @row_id

if @row_attribute is null
begin
... handle not existing condition
end

问题来了,将if语句中的条件替换为:

if @@rowcount = 0
begin
... handle not existing condition
end

我了解 exist 函数,但这里的目标是获取行的一些属性并同时检查其是否存在。

最佳答案

是的。

除非 WHERE子句不在 PK(或唯一索引)上,可能会返回多行,但这可能是一个错误。在这种情况下,变量会被重复重新分配,其最终值将取决于计划。

DECLARE @row_attribute INT

select
@row_attribute = object_id
from
sys.objects /*<--No WHERE clause. Undefined what the
final value of @row_attribute will be.
depends on plan chosen */


SELECT @row_attribute, @@ROWCOUNT

编辑。刚刚注意到您建议的测试是 if @@rowcount = 0不是if @@rowcount <> 1所以上面的内容不会影响它,整个答案可以浓缩为"is"这个词!

关于sql - 检查@@rowcount函数来确定行是否存在可以吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5504167/

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