0

こんにちは、テーブルを更新する手順があります。

UPDATE myTbl
SET pswd = @newPswd
where id = @id and pswd = @pswd

今すぐ確認したい

if pswd <> @pswd
print 'error'

どうやって?エラー無効な列がある場所の後にそれを書くとき

4

3 に答える 3

1

if ステートメントで列の名前を直接呼び出すことはできません。pswd の値をローカル変数 (@pswd 変数とは異なる) に設定し、2 つを比較する必要があります。

 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
于 2013-08-13T12:25:11.680 に答える
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または(適切な場合) の使用も検討することをお勧めします。THROWPRINT

返された特定の行数をさらに処理する必要がある場合は、それを変数に取り込んで処理する必要があります。すべてのステートメント@@ROWCOUNTでリセットが発生します。

于 2013-08-13T12:21:49.607 に答える
0

EXISTS()機能を使用できます

IF EXISTS(SELECT * FROM myTbl WHERE id = @id and pswd <> @pswd)
BEGIN
    print 'error'
END 
于 2013-08-13T12:29:06.647 に答える