您将如何实施该检查?您有一个存储过程的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
最终目标是在DB中将所有参数为空或使用默认值的代码移动进行插入空行的检查,以便其他应用程序可以调用相同的存储过程而无需处理检查空行。
答案 0 :(得分:2)
您的代码
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