S’il vous plaît, aidez-moi, j’essaie d’intercepter les exceptions dans un processus de magasin et de revenir en arrière

la programmation


ALTER  PROCEDURE [dbo].[SendSMS_TestMark]
    @EntityID INT , --PolicyID
    @Mobile VARCHAR(11) ,
    @Message VARCHAR(480) ,--What Needs to be send Text
    @ScheduleDateTime DATETIME , --Same date sync
	@DateCreated DATETIME, --Same date sync
    @ProjectID INT -- ClaimType and message type 
AS
BEGIN TRY 
BEGIN TRAN
IF LEN(@Mobile) <= 10 OR (LEN(@Mobile) >=10 )

INSERT  INTO Media_QA.Multimedia.SMS
                ( fkEntityID ,
                  C_EntityType ,
                  Mobile ,
                  Message ,
                  ScheduledDateTime ,
                  DateCreated ,
                  fkProjectID
                )
                SELECT  @EntityID ,
                        776 , --Policy
						 @Mobile,
                        @Message ,
                        @ScheduleDateTime ,
                        @DateCreated ,
                        @ProjectID

END TRY
BEGIN CATCH 
RAISERROR ('Invalid Mobile: Mobile number must be 10 digits', 16,2 )
ROLLBACK
COMMIT TRAN

Ce que j’ai essayé :

J’ai essayé d’échanger les fonctions mais elles s’engagent toujours

Solution 1

Je ne vois nulle part de END CATCH, donc ça va être un problème.

De plus, vous ne lancez aucune exception pour que le bloc TRY soit intercepté. Le simple fait d’échouer une instruction IF ne lève pas d’exception.

Franchement, je ne vois rien ici qui nécessite même un TRY/CATCH. Le côté “faux” de votre instruction IF pourrait générer une erreur renvoyée à l’appelant.

コメント

タイトルとURLをコピーしました