静态或嵌入式SQL是应用程序中的SQL语句, 它们在运行时不会更改, 因此可以硬编码到应用程序中。动态SQL是在运行时构造的SQL语句。例如, 该应用程序可以允许用户输入自己的查询。
动态SQL是一种编程技术, 使你可以在运行时动态构建SQL语句。你可以使用动态SQL创建更通用, 更灵活的应用程序, 因为在编译时SQL语句的全文可能是未知的。
使用静态SQL的好处是优化了语句, 从而使应用程序具有高性能, 因为它提供了比动态SQL更好的灵活性, 并且由于动态语句的访问计划是在运行时生成的, 因此必须在运行时准备它们。应用程序, 这是你在静态SQL中永远不会看到的东西, 但这并不是它们之间的唯一区别, 因此我们可以说动态SQL仅比静态语句具有一个优势, 一旦应用程序被使用, 就可以清楚地注意到它。编辑或升级的, 因此使用Dynamic语句, 只要在运行时生成访问计划, 就无需进行预编译或重新构建, 而静态语句则需要修改访问计划(如果对其进行了修改), 此外, 动态SQL需要更多权限, 这也可能是执行未经授权的代码的方式, 我们不知道我们将拥有什么样的用户, 因此出于安全考虑, 危险的如果程序员没有处理。
下面提到的是两者之间的基本区别static or 嵌入式的和动态 or 互动SQL:
静态(嵌入式)SQL | 动态(交互式)SQL |
---|---|
在静态SQL中, 嵌入式SQL语句中预先确定了如何访问数据库。 | 在Dynamic SQL中, 将在运行时确定如何访问数据库。 |
它更加快捷高效。 | 它不那么快捷有效。 |
SQL语句在编译时进行编译。 | SQL语句在运行时进行编译。 |
解析, 验证, 优化和生成应用程序计划是在编译时完成的。 | 在运行时完成应用程序计划的解析, 验证, 优化和生成。 |
它通常用于数据均匀分布的情况。 | 它通常用于数据非均匀分布的情况。 |
不使用EXECUTE IMMEDIATE, EXECUTE和PREPARE语句。 | 使用EXECUTE IMMEDIATE, EXECUTE和PREPARE语句。 |
它不太灵活。 | 它更加灵活。 |
动态SQL的局限性:
我们不能动态使用某些SQL语句。
与静态SQL相比, 这些语句的性能很差。
静态SQL的局限性:
它们在运行时不会更改, 因此被硬编码到应用程序中。
评论前必须登录!
注册