永洪报表传参的方式
SQl中的参数
假设有个参数名为a的参数,可以以如下形式用在SQL中。
1. 直接?{a}形式
如where city=?{a},参数必须传值
此语句是直接用参数值替换"?{a}“的字符。如果a=北京,就替换成"where city=北京”。因此,a不能是空值,否则"where city="的语句就非法了。
2. 中包含?{x}形式
例如where city=?{x},参数可以不传值
此语句用来标注此条where语句的起始位置,<></>里的内容要和参数的名字一样,要成对出现,不可嵌套使用。当x是空值的时候,会自动把此标签之内的语句删除,这个例子里where语句被删除,因此允许x为空。一般使用如下:
select * from coffee where 1=1 and market in ?{m}
select * from coffee where market like ?{m}
➢例如:
select * from coffee where 1=1 and market in ?{m},当m为空值的时候,则执行SQL:例如select * from coffee where 1=1;
select * from coffee where market like ?{m},当m为空值的时候,则执行SQL:select * from coffee;
如果需要进行模糊查询,注意需要把模糊查询的匹配字符放在参数中,不能将参数写在引号内,如select * from coffee where market like ?{m},然后在m中的值传入%market%,则执行SQL:select * from coffee where market like ‘%market%’。
3. ?{@a},内嵌参数形式
这种内嵌的参数将被直接在SQL Statement中替换为参数值,而不是调用prepared statement.setParam(),这种办法有更高的灵活性,例如可以不要select而是将select子句作为参数传入, 或者将表名作为参数,如 select * from ?{@a}, a可以是任意输入的table name。