您有更新表的程序。
UPDATE myTbl
SET pswd = @newPswd
where id = @id and pswd = @pswd
现在想要检查
if pswd <> @pswd
print 'error'
怎么做?当我写错误无效列之后
答案 0 :(得分:1)
您可以使用@@ROWCOUNT
计算前一个语句影响的行数:
UPDATE myTbl
SET pswd = @newPswd
where id = @id and pswd = @pswd
if @@ROWCOUNT = 0
print 'Error - @id and/or @pswd didn''t match'
您可能还想考虑使用RAISERROR
或THROW
(如果适用)而不仅仅是PRINT
来处理错误情况。
如果您需要继续使用返回的特定行计数,您应该在变量中捕获它并使用它 - 每个语句都会导致@@ROWCOUNT
重置。< / p>
答案 1 :(得分:1)
您不能直接在if语句中调用列的名称。你需要将pswd的值设置为局部变量(与@pswd变量不同),然后比较两者。
Declare @tempPswd varchar(20)
Select @tempPswd = pswd
From myTbl
Where id = @id
if (@tempPswd <> @pswd)
Print 'Error....'
Else
Begin
Update myTbl
Set pswd = @newPswd
Where id = @id and pswd = @pswd
End
答案 2 :(得分:0)
您可以使用EXISTS()
功能
IF EXISTS(SELECT * FROM myTbl WHERE id = @id and pswd <> @pswd)
BEGIN
print 'error'
END