SQL - хотите записать уникальное значение ошибки для каждого условия IF - PullRequest
0 голосов
/ 03 января 2019

Я передаю много данных и проверяю их на наличие ошибок, чтобы убедиться, что они соответствуют правильному формату. Итак, я создаю много условий IF, и до сих пор я могу сгруппировать множество условий, но вывести только один вид ошибки ... или я в итоге пишу много кода для каждого условия, просто чтобы иметь кристально чистую ошибку выход.

Есть ли способ поместить в условие IF конкретную строку вывода ошибки?

Вот мой код:

-- set the initial @IntHosp_SUM value
        SELECT @IntHosp_SUM = 0  

        -- Store the sum value to @IntHosp_SUM
        SELECT  @IntHosp_SUM =
            (
            (COALESCE (CASE WHEN @Int1_5hosp = 1 THEN COUNT (Int1_5) ELSE NULL END, 0)) + 
            (COALESCE (CASE WHEN @Int2_5hosp = 1 THEN COUNT (Int2_5) ELSE NULL END, 0)) + 
            (COALESCE (CASE WHEN @Int3_5hosp = 1 THEN COUNT (Int3_5) ELSE NULL END, 0)) + 
            (COALESCE (CASE WHEN @Int4_5hosp = 1 THEN COUNT (Int4_5) ELSE NULL END, 0)) + 
            (COALESCE (CASE WHEN @Int5_5hosp = 1 THEN COUNT (Int5_5) ELSE NULL END, 0)) + 
            (COALESCE (CASE WHEN @Int6_5hosp = 1 THEN COUNT (Int6_5) ELSE NULL END, 0))  
            ) 
        FROM    ASSSIST2_M0Teacher


        -- Check  RESUSE_SUM Value against Intervention Entries
        SELECT  @ErrorID = IsNull(Max(ErrorID) + 1, 1)
        FROM        ErrorTemp
        WHERE   (Quest = @DB + @Quest) AND (ValidateID = @ValidateID) 

        SELECT @Error = 0

        IF (@IntHosp_SUM = 1 and @Hosp1_info is null )
        or (@IntHosp_SUM = 2 and (@Hosp1_info is null or @Hosp2_info is null))
        or (@IntHosp_SUM >=3 and (@Hosp1_info is null or @Hosp2_info is null or @Hosp3_info is null))


        or (@IntHosp_SUM = 0 and (@Hosp1_info is not null or @Hosp2_info is not null or @Hosp3_info is not null ))
        or (@IntHosp_SUM = 1 and (@Hosp2_info is not null or @Hosp3_info is not null ))
        or (@IntHosp_SUM >= 2 and @Hosp3_info is not null)



            BEGIN   
            SELECT @Error = 1   
            END
            BEGIN 
            IF @Error = 1   
                INSERT INTO     ErrorTemp 
                        (Quest, 
                        ValidateID, 
                        ErrorID, 
                        ErrorType,
                        ErrorDesc,
                        Field)
                VALUES  (@DB + @Quest, 
                        @ValidateID, 
                        @ErrorID,
                        'Validation',       
                        'Too much or no info present, so incorrect',                                
                        'Hosp Info - admissions')                                       
            SELECT  @ErrorID = @ErrorID + 1
            END

Я объявил все переменные и их местонахождение в БД, но не хотел загромождать дополнительным кодом. Вы можете видеть, что я суммирую ряд полей, если они содержат значение 1. Я не хочу добавлять другие значения, только те, которые имеют «1».

Мои условия IF, затем проверьте, что если есть сумма 1, есть одна запись. Если 2, то две записи ... мы должны быть тщательными и проверить обратное, поэтому, если значение суммы равно 0, то никаких записей не делается и т. Д.

Есть ли способ передать строку из условия IF / OR в вывод ошибок, чтобы я мог написать уникальную ошибку для каждого условия?


SQL Server Management Studio 17.2

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