0
からのエラーを無視することは、いくつかのSQLです...ADOはおそらくここでSQL Serverの
UPDATE table1 SET date = GETDATE() WHERE id = @id
IF @@ROWCOUNT = 0
BEGIN;
THROW 50004, 'Row not updated.', 1;
END
私は偽のIDを管理Studioでこれを実行すると、私は...
(0行を取得影響を受ける)メッセージ50004、レベル16、状態1、手順 MyStoredProcedure、行50行が更新されません。
これをASP Classicから実行すると、Err.Number
は0であり、接続のエラーコレクションは空です。
UPDATE
ステートメントを削除すると、エラーが登録されます。
更新後にADOがエラーを無視するのはなぜですか?
「ADOエラーを無視する」*は少し予期せず、ADODBが使用しているSQL Serverプロバイダが何らかの理由でTHROWステートメントをトリガしない可能性があります。覚えているのは、SSMSから機能するということは、ADODBからはじめて動作するわけではありませんが、SSMSでのクエリのテストが始まることを意味します。決定的な証拠が得られるまで、結論に飛び乗ってはいけません。 – Lankymart
'@@ ROWCOUNT'の正しい結果を得るために' SET NOCOUNT ON; 'を呼びますか? – Lankymart
はい、質問は予期しています。いい考え。私は「SET NO COUNT ON;」で問題を解決しました。しかし、それがなくても、@@ ROWCOUNTはASPから呼び出されたときでも動作しますが、ストアドプロシージャのOUTパラメータを介してASPに正しい値を返すことでこれを証明しました。だから私の "仮説"はまだ反論されていないと思う。 –