您如何看待,存储过程总是返回1?
我担心if exists(..)
BEGIN
DECLARE @IsUserExisting bit
SET NOCOUNT ON
IF Exists
(
Select null FROM G_User WHERE
SamAccountName = @SamAccountName
AND NetBIOSDomainName = @NetBIOSDomainName
)
BEGIN
SET @IsUserExisting = 1
END
ELSE
BEGIN
SET @IsUserExisting = 0
END
Select @IsUserExisting
END
答案 0 :(得分:2)
不,如果WHERE子句没有返回任何内容,则IF Exists()返回false,因此@IsUserExisting设置为0。
答案 1 :(得分:1)
Makis已经回答了你的问题,但我想建议以下
您可以使用以下方法简化代码:
declare @IsUserExisting bit;
set @IsUserExisting = (
select count(*) from G_User
where SamAccountName = @SamAccountName and
NetBIOSDomainName = @NetBIOSDomainName);
select @IsUserExisting;
我认为以下情况甚至更短。
select count(*) from G_User
where SamAccountName = @SamAccountName and
NetBIOSDomainName = @NetBIOSDomainName)
答案 2 :(得分:1)
BEGIN
DECLARE @IsUserExisting bit
SET NOCOUNT ON
IF Exists
(
Select null FROM G_User WHERE
SamAccountName = @SamAccountName
AND NetBIOSDomainName = @NetBIOSDomainName
)
BEGIN
SET @IsUserExisting = 1
END
ELSE
BEGIN
SET @IsUserExisting = 0
END
Select @IsUserExisting
END
我尝试使用此功能,但如果设置为true,则会设置@IsUserExisting = -1
!!
答案 3 :(得分:0)
如果您只是在测试是否存在某些内容,则不应使用Select Count()。虽然在这种情况下它应该相当快地返回,但是如果EXISTS()在找到匹配的记录时立即返回true。选择Count()将查看所有记录,以便为您提供完整的计数,从而增加不必要的开销。