Выражение в списке параметров? - PullRequest
1 голос
/ 04 ноября 2019

В настоящее время у меня есть два вызова хранимой процедуры с различными параметрами в зависимости от оператора if. Есть ли способ поместить выражение case перед параметром для включения / не включения на основе этого случая вместо использования оператора if и двух разных вызовов?

Вот мой текущий код:

if (@SubmissionStatus = 'REJ' or @SubmissionStatus = 'ACP') and (@LoadUsage = '|CreateBatch|')
    begin
        --when current submission is 'OPT' we change it to 'REJ' before creating a new 'CRT' submission
        exec @internal = ii_UpdateClaimSubmission
        @Usage                          = @LoadUsage,
        @UserId                         = @UserId,
        @ClaimSubmissionId              = @OldClaimSubmissionId,
        @SubmissionStatus               = @OldSubmissionStatus,
        --@ExternalBatchNumber          = @ExternalBatchNumber,
        --@FrequencyType                = @FrequencyType,
        @ProcessingStatus               = @ProcessingStatus,
        @TechnicalErrorCode             = @RejectReasonCode,
        @TechnicalErrorDescription      = @RejectDescription,
        @TransactionAcknowledgementCode = @TransactionAcknowledgementCode,
        @ResubmissionNumber             = @ResubmissionNumber,
        @DoNotSendReason                = @DoNotSendReason,
        @DebugFlag                      = @DebugFlag,
        @InputAdjustmentVersion         = @Version,
        @ErrorMsg                       = @UserMsg out
    end
            else
                begin
                    -- we are updating an existing submission to potentially close it out, and not creating a new submission
                    exec @internal = ii_UpdateClaimSubmission
                                @Usage                          = @LoadUsage,
                                @UserId                         = @UserId,
                                @ClaimSubmissionId              = @OldClaimSubmissionId,
                                @ExternalBatchNumber            = @ExternalBatchNumber,
                                @FrequencyType                  = @FrequencyType,
                                @SubmissionStatus               = @SubmissionStatus,
                                @ProcessingStatus               = @ProcessingStatus,
                                @TechnicalErrorCode             = @RejectReasonCode,
                                @TechnicalErrorDescription      = @RejectDescription,
                                @TransactionAcknowledgementCode = @TransactionAcknowledgementCode,
                                @ResubmissionNumber             = @ResubmissionNumber,
                                @DoNotSendReason                = @DoNotSendReason,
                                @DebugFlag                      = @DebugFlag,
                                @ErrorMsg                       = @UserMsg out

В одном списке параметров у меня есть дополнительные параметры (@ExternalBatchNumber, @FrequencyType, @Version), а в другом - нет.

1 Ответ

3 голосов
/ 04 ноября 2019

Я бы просто передал NULL или другое значение по умолчанию, когда параметр не требуется:

IF (@SubmissionStatus = 'REJ' or @SubmissionStatus = 'ACP') and (@LoadUsage = '|CreateBatch|')
BEGIN 
    SET @ExternalBatchNumber = null;
    SET @FrequencyType = null;
END;

Тогда вы можете просто использовать вторую версию вашего вызова для ii_UpdateClaimSubmission.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...