静态或嵌入式 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