动态 SQL 是一种表达应用程序逻辑的强大方法。它允许在执行过程时构建 SQL 语句。但是,执行动态 SQL 的速度很慢,因为每次调用过程时都必须执行编译时检查和查询优化。 在使用变量的动态 SQL 替代方法时,应改用它。
另一个相关问题是安全问题,因为如果不对使用的变量进行适当检查就构建 SQL 语句,可能会造成安全漏洞,例如 SQL 注入。在 SQL 语句中使用变量可防止这些问题,因为类型检查在编译时执行,并且参数无法注入任意 SQL 代码。
下表汇总了动态 SQL 的潜在用例:
动态 SQL 用例功能建议的解决方案预计属性动态 SQL预计文字SQL + 变量FROM 子句SQL + 变量;结果结构必须保持不变WHERE 子句 – 属性名称和布尔运算符APPLY_FILTER