Xin hãy giúp đỡ. Tôi đang cố gắng nắm bắt các ngoại lệ trong quy trình của cửa hàng và quay lại

lập trình


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

Những gì tôi đã thử:

Tôi đã thử hoán đổi các chức năng nhưng họ vẫn cam kết

Giải pháp 1

Tôi không thấy END CATCH ở đâu cả, vì vậy đó sẽ là một vấn đề.

Ngoài ra, bạn không ném ngoại lệ vào bất kỳ đâu để khối TRY bắt được. Việc không thực hiện được câu lệnh IF sẽ không tạo ra ngoại lệ.

Thành thật mà nói, tôi không thấy bất kỳ điều gì ở đây thậm chí yêu cầu TRY/CATCH. Mặt “sai” của câu lệnh IF của bạn có thể gây ra lỗi được trả về cho người gọi.

コメント

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