您好有更新表的程序。
UPDATE myTbl
SET pswd = @newPswd
where id = @id and pswd = @pswd
现在想检查
if pswd <> @pswd
print 'error'
怎么做?当我在哪里有一个错误无效列之后写它时
您好有更新表的程序。
UPDATE myTbl
SET pswd = @newPswd
where id = @id and pswd = @pswd
现在想检查
if pswd <> @pswd
print 'error'
怎么做?当我在哪里有一个错误无效列之后写它时
您可以使用@@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
or THROW
(如果合适的话),而不仅仅是PRINT
用于错误条件。
如果您需要对返回的特定行数做进一步的工作,您应该将它捕获在一个变量中并使用它 -每个语句都会导致@@ROWCOUNT
重置。
您不能在 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
你可以使用EXISTS()
功能
IF EXISTS(SELECT * FROM myTbl WHERE id = @id and pswd <> @pswd)
BEGIN
print 'error'
END