静态SQL(或嵌入式SQL)是应用程序中的 SQL 语句,它们在运行时不会更改,因此可以硬编码到应用程序中。动态 SQL 是在运行时构造的 SQL 语句;例如,应用程序可能允许用户输入他们自己的查询。
动态SQL是一种编程技术,使开发人员能够在运行时动态构建 SQL 语句。可以使用动态 SQL 创建更通用、更灵活的应用程序,因为 SQL 语句的全文在编译时可能是未知的。
使用静态 SQL 的一个好处是优化语句,从而使应用程序具有高性能,因为它提供了比动态 SQL 更好的灵活性,并且由于动态语句的访问计划是在运行时生成的,因此它们必须在应用程序,这是你永远不会在静态 SQL 中看到的东西,但这并不是它们之间唯一的区别,所以我们可以说动态 SQL 与静态语句相比只有一个优势,一旦应用程序运行,就可以清楚地注意到这一点。编辑或升级,因此使用动态语句,只要在运行时生成访问计划,就不需要预编译或重新构建,而静态语句如果修改了访问计划,则需要重新生成访问计划,除此之外动态 SQL 需要更多权限,它也可能是执行未经授权代码的一种方式,我们不知道用户会提交什么样的数据,所以为了安全,如果程序没有处理提交的数据,那么可能会很危险。

下面提到的是静态或嵌入式与动态或交互式 SQL 之间的基本区别:

静态(嵌入式)SQL 动态(交互式)SQL
在静态 SQL 中,如何访问数据库是在嵌入式 SQL 语句中预先确定的。 在动态 SQL 中,如何访问数据库是在运行时确定的。
它更加迅速和高效。 它不那么迅速和高效。
SQL 语句是在编译时编译的。 SQL 语句在运行时编译。
应用程序计划的解析、验证、优化和生成在编译时完成。 应用程序计划的解析、验证、优化和生成在运行时完成。
一般用于数据分布均匀的情况。 它通常用于数据分布不均匀的情况。
不使用 EXECUTE IMMEDIATEEXECUTEPREPARE 语句。 使用 EXECUTE IMMEDIATEEXECUTEPREPARE 语句。
它不太灵活。 它更灵活。
欢迎任何形式的转载,但请务必注明出处,尊重他人劳动成果。
转载请注明:文章转载自 有区别网 [http://www.vsdiffer.com]
本文标题:静态SQL 和动态SQL 的区别
本文链接:https://www.vsdiffer.com/vs/difference-static-dynamic-sql.html
免责声明:以上内容仅是站长个人看法、理解、学习笔记、总结和研究收藏。不保证其正确性,因使用而带来的风险与本站无关!如本网站内容冒犯了您的权益,请联系站长,邮箱: ,我们核实并会尽快处理。