静态SQL和动态SQL的区别

静态或嵌入式 SQL是应用程序中在运行时不会更改的SQL语句,因此可以硬编码到应用程序中。 动态 SQL是在运行时构造的SQL语句;例如,应用程序可能允许用户输入自己的查询。

null

动态 SQL是一种编程技术,使您能够在运行时动态构建SQL语句。通过使用动态SQL,您可以创建更通用、更灵活的应用程序,因为SQL语句的全文在编译时可能是未知的。

使用静态SQL有一个好处,那就是优化语句,使应用程序具有高性能,因为它提供了比动态SQL更好的灵活性,而且由于动态语句的访问计划是在运行时生成的,因此必须在应用程序中准备好,这是你永远不会在静态SQL中看到的东西,但这并不是它们之间唯一的区别,所以我们可以说动态SQL与静态语句相比只有一个优势,一旦应用程序被编辑或升级,就可以清楚地看到静态语句,因此,对于动态语句,只要在运行时生成访问计划,就不需要预编译或重新构建,而静态语句需要在修改访问计划时重新生成访问计划,除了动态SQL需要更多权限之外,它还可能是执行未经授权代码的一种方式,我们不知道我们将拥有什么样的用户,所以为了安全起见,我们可以这样做 危险的 如果程序员不处理它。

以下是两者的基本区别 静止的 嵌入的 动态 互动的 SQL:

    静态(嵌入式)SQL 动态(交互式)SQL
    在静态SQL中,如何访问数据库是在嵌入式SQL语句中预先确定的。 在动态SQL中,访问数据库的方式在运行时确定。
    它更加快捷高效。 它没有那么迅速和高效。
    SQL语句在编译时编译。 SQL语句在运行时编译。
    应用程序计划的解析、验证、优化和生成在编译时完成。 应用程序计划的解析、验证、优化和生成在运行时完成。
    它通常用于数据均匀分布的情况。 它通常用于数据分布不均匀的情况。
    不使用EXECUTE IMMEDIATE、EXECUTE和PREPARE语句。 使用EXECUTE IMMEDIATE、EXECUTE和PREPARE语句。
    它不那么灵活。 它更灵活。

动态SQL的限制: 我们不能动态地使用一些SQL语句。 与静态SQL相比,这些语句的性能很差。

静态SQL的局限性: 它们在运行时不会更改,因此被硬编码到应用程序中。

© 版权声明
THE END
喜欢就支持一下吧
点赞15 分享