2016-09-25 2 views
0

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 

Répondre

0

mise à jour simple ou instruction Insert sera automatiquement dans la transaction atomique. Vous n'avez pas besoin d'une transaction explicite pour démarrer et valider. Si cette instruction est réussie, elle sera validée sinon elle est déjà sauvegardée. De plus, vous n'avez pas de retour en arrière explicite qui n'est pas nécessaire.

D'autre part, le bloc ne nécessite pas une autre condition 'IF @@ Rowcount> 0' raison est que si elle se trouve sous un bloc else, cela signifie que vous avez un enregistrement pour cette valeur.

+0

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

+0

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 –