0
4分ごとに同期のために使用されるストアドプロシージャを作成しています。これは単なるテストケースであり、例外も同様に取り込む必要があります。この手順でtryとcatchブロックを使用する他の方法はありますか?これは問題ありませんか?ここでSQL Serverのプロシージャのパフォーマンスを向上させる
は、ストアドプロシージャです:
Create procedure inbound_test
@APP1_NO int,
@APP1_NAME nvarchar (20),
@APP1_CREATED date,
@APP1_NO_PK nvarchar(20)
as
if exists (select App1_no from test_in1 where App1_no = @APP1_NO)
Begin try
Begin transaction
Update test_in1
set APP1_NO = @APP1_NO,
APP1_NAME = @APP1_NAME,
APP1_CREATED = @APP1_CREATED,
APP1_NO_PK = @APP1_NO_PK
where App1_no = @APP1_NO
Commit transaction
End try
Begin Catch
If @@Trancount > 0
Throw;
End Catch
else
If @@ROWCOUNT=0
Begin try
Begin Transaction
insert into test_in1(
APP1_NO ,
APP1_NAME ,
APP1_CREATED,
APP1_NO_PK
)
values (@APP1_NO ,@APP1_NAME , @APP1_CREATED,@APP1_NO_PK)
Commit transaction
End try
Begin Catch
If @@Trancount >0
Throw;
End Catch
GO
ご回答ありがとうございます。 elseステートメントを使用していない場合、Insertステートメントが機能していません。このプロシージャーからトランザクションを削除します。この手順はWebサービスで使用され、4分ごとに同期に使用されるため、パフォーマンスを向上させるために何ができるのか教えてください。 – paemmi
このように、2つの簡単なステートメントは更新または挿入です適切なインデックスを追加し、実行計画とレコードのボリュームを確認して、そのレコードを決定することができます。 –