Проверка, получил ли каждый параметр хранимой процедуры значение по умолчанию или нет - PullRequest
0 голосов
/ 09 июня 2011

Как бы вы осуществили эту проверку?У вас есть N параметров для хранимой процедуры.

Если все значения имеют значение null или 0 или пустую строку, запустите код, иначе пропустите его

Вот как я это реализовал, есть ли лучший способ?

Мне действительно не нравится то, что я сделал, поэтому я открыт для любой лучшей идеи, должен быть легко поддерживаемым, поскольку это будет сделано во многих местах

    declare @doRunIt bit
    declare @checkAllNull varchar(max)
    declare @sumOfInt int

    set @checkAllNull = ''
    set @checkAllNull = @checkAllNull + coalesce(@param1,'')
    set @checkAllNull = @checkAllNull + coalesce(@param2,'')
    set @checkAllNull = @checkAllNull + coalesce(@param3,'')
    set @checkAllNull = @checkAllNull + coalesce(@param4,'')
    set @checkAllNull = @checkAllNull + coalesce(@param5,'')
    set @checkAllNull = @checkAllNull + coalesce(@param6,'')

    set @sumOfInt = coalesce(@param7,0)+coalesce(@param8,0)+
                    coalesce(@param9,0)+coalesce(@param10,0)+
                    coalesce(@param11,0)+coalesce(@param12,0)

    set @checkAllNull = @checkAllNull + cast(@sumOfInt as varchar(max))



    if ( isnumeric(@checkAllNull)=1 )
        if (cast(@checkAllNull as int) > 0)
            set @doRunIt = 1
        else
            set @doRunIt = 0
    else
        if (ltrim(rtrim(@checkAllNull)) <> '')
            set @doRunIt = 1
        else
            set @doRunIt = 0

Конечная цель -перенести проверку, выполненную в коде для вставки пустой строки, если все параметры равны нулю или используют значение по умолчанию, в БД в хранимую процедуру, чтобы другие приложения могли вызывать ту же хранимую процедуру без необходимости проверять наличие пустой строки.

1 Ответ

2 голосов
/ 09 июня 2011

Ваш код

DECLARE @IsValid BIT = dbo.IsValidParameter(@param1) & 
                       dbo.IsValidParameter(@param2) & 
                       dbo.IsValidParameter(@param3) & 
                       dbo.IsValidParameter(@param4)

Вспомогательная функция

CREATE FUNCTION dbo.IsValidParameter(@p1 Sql_Variant)
RETURNS bit
AS
BEGIN
    IF @p1 IS NULL OR @p1 = '' OR @p1 = 0
        RETURN 0    
    RETURN 1    
END
GO
...