select sku.ID as ID
from sku, rule
where rule.status = 1 and rule.type = 3
#if(${channelId})
and rule.channelId = ${channelId} 
#end
and rule.ID = sku.ID 
#if(${refLogic})
and rule.refLogic= ${refLogic} 
#end
and sku.cycleStatus<> 0有这样一个语句,不知道#if #end $(channelId)这各写法是什么意思?请高手指点!!!!

解决方案 »

  1.   

    还有这样写的呢,我也没见过,是别的什么语法里面的吧,看起来像在组织SQL
      

  2.   

    你这个不是纯 SQL,是 shell 脚本拼接 sql 的吧
    这个意思就是 如果 ${变量名} 不为空,就加一个条件
      

  3.   

    这个是在velocity的java模板中写的
      

  4.   

    if end 正常意思是结束你前面的条件控制块,也就是if...else...end 的过程.
      

  5.   

    作用类似做报表时候,在SQL条件最后加上一个&LP_ORG_ID,实际上是一个字符串的拼凑,然后通过判断语句然后赋值给这个LP_ORG_ID从而实现对查询语句一些查询条件的筛选过滤吧。