Sql =''和isnull(a.[payid],'')=''和isnull(a.[paysubid],'')='') 和isnull(b[状态],“”)=@cat 并且a.stat277_statusId为空 和[csflevel]=@级别 打印“默认值”

Sql =''和isnull(a.[payid],'')=''和isnull(a.[paysubid],'')='') 和isnull(b[状态],“”)=@cat 并且a.stat277_statusId为空 和[csflevel]=@级别 打印“默认值”,sql,user-defined-functions,Sql,User Defined Functions,您可以在select中使用case语句来覆盖所有条件,而不是在where子句中,例如 select @message = case when isnull(a.sourceofpay,'') = @sop and isnull(a.[payid],'') = @payid and isnull(a.[paysubid],'') = @paysubid and isnull(b.[status],'') = @cat an

您可以在select中使用case语句来覆盖所有条件,而不是在where子句中,例如

select @message = 
   case
     when isnull(a.sourceofpay,'') = @sop
       and isnull(a.[payid],'') = @payid
       and isnull(a.[paysubid],'') = @paysubid
       and isnull(b.[status],'') = @cat 
       and isnull(c.[status],'') = @stat
       and a.[csflevel] = @level then
       'status match - sop, payid and subid override. out value = '
     when ...
     else 'default ''''' end,
  @out = d.billedstat
  from [dbo].[BilledStatusOverride] a
    inner join [dbo].[cat277] b on a.[cat277_statusId] = b.[COUNTER]
    left outer join [dbo].[stat277] c on a.[stat277_statusId] = c.[COUNTER]
    inner join [dbo].[bsname] d on a.[bsname_statId] = d.[counter] 

显然要取代。。。使用其他测试条件。它仍然不是特别好,但至少它只是一条SQL语句。

你确定你在使用MySQL吗?这看起来更像MS SQL Server代码。
select @message = 
   case
     when isnull(a.sourceofpay,'') = @sop
       and isnull(a.[payid],'') = @payid
       and isnull(a.[paysubid],'') = @paysubid
       and isnull(b.[status],'') = @cat 
       and isnull(c.[status],'') = @stat
       and a.[csflevel] = @level then
       'status match - sop, payid and subid override. out value = '
     when ...
     else 'default ''''' end,
  @out = d.billedstat
  from [dbo].[BilledStatusOverride] a
    inner join [dbo].[cat277] b on a.[cat277_statusId] = b.[COUNTER]
    left outer join [dbo].[stat277] c on a.[stat277_statusId] = c.[COUNTER]
    inner join [dbo].[bsname] d on a.[bsname_statId] = d.[counter]