集深数据系统
书写方式不同 参数是以?或@为标识(其中复杂sql中书写参数时以?为标识,其他地方均为@)。 例如:SELECT a,b FROM T WHERE xxx=10 AND yyy=?y 宏是以${XXX}为标识。 例如:select * from demo_orders where ${orders}
起作用方式不同 参数起作用的方式是将外界传入的值传给参数名,例如:SELECT a,b FROM T WHERE xxx=10 AND yyy=?y,传入参数值3后为:SELECT a,b FROM T WHERE xxx=10 AND yyy=3。其中动态参数是先计算表达式后,将计算的值传给参数名。总之,无论是普通参数还是动态参数,传入的都是一个计算好的值。 宏起作用的方式是将宏的值直接替换sql中对应的标识,例如:select * from demo_orders where ${orders},宏的值为demo_orders.发货地区=华北,则会将宏的值直接替换${orders},结果为:select * from demo_orders where demo_orders.发货地区=华北。其中动态宏是先计算表达式后,将计算结果像普通宏一样,直接替换宏标识。总之,无论是普通宏还是动态宏,传入的都是一条字符串。
作用有所区别 参数的作用是通过为sql中传入条件值来实现数据的过滤功能,参数的作用仅限于此。 宏也可以向sql传入查询条件实现数据的过滤。 但宏还具有其他功能,例如使用通用查询的宏可以实现动态条件、动态表名等。 select * from demo_orders_${diqu}