J'écris une procédure stockée qui va être utilisée pour une synchronisation toutes les 4 minutes. C'est juste un test et j'ai besoin de capturer l'exception. Y a-t-il un autre moyen d'utiliser try and catch block dans cette procédure ou bien?Améliorer les performances de la procédure dans SQL Server
Voici la procédure stockée:
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
Merci pour votre réponse kannan. Si je n'utilise pas d'instruction else, l'instruction Insert ne fonctionne pas. Je supprimerai la transaction de cette procédure. Pourriez-vous me dire ce que je peux faire d'autre pour améliorer les performances car cette procédure sera utilisée par un webservice et sera utilisée pour la synchronisation toutes les 4 minutes – paemmi
En tant que tel, il s'agit de deux instructions simples à mettre à jour ou à insérer, mettre à jour pour atteindre cet enregistrement plus rapidement, vous pouvez ajouter un index approprié, vérifier le plan d'exécution et le volume des enregistrements, puis décider de ce –