文章 cheng yu · 1 小时 前 2m read

动态SQL与嵌入式SQL概述

 

 

与图片中提到的电影(对于不了解的人来说,就是1999年的《黑客帝国》)不同,在动态SQL和嵌入式SQL之间做出选择,并非在现实与幻想之间抉择,但这仍然是一个需要做出的决定。下面,我将尝试帮助您更轻松地做出选择。

如果您的需求是客户端与应用程序(进而与数据库)之间的交互,那么动态 SQL 可能更合适,因为它能非常轻松地“适应”这些查询变化。然而,这种动态性是有代价的:每次新的查询都会重新构建,这可能会导致更高的执行成本。下面是一个简单的 Python 代码片段示例。

 

动态 SQL 示例

仅根据上述信息,嵌入式 SQL 是否是最佳选择?这要视情况而定。如果仅从执行敏捷性这一角度考虑,我们可以选择这种方式。因为 SQL 语句被直接嵌入到程序代码中,并使用 HOST 变量进行数据的输入和输出。本文的目的并非教大家如何使用某一种或另一种选项,而是为了开阔视野,了解各种可能性,并对每种选项都有所了解。

下面列出了一些相关特性,在开始需要执行 SQL 查询的开发工作时,应将其纳入考量:

如前所述,嵌入式 SQL 通常因其性能而被人们铭记,但这并非一场竞赛,速度也不是我们生活的全部。它与多种高级语言的集成使开发者能够更有效地利用资源,这是因为他们无需检索大量外部文件或独立脚本,从而使代码更加简洁且易于维护。

它还以一致性著称,毕竟对数据库的更改可以同步反映在 SQL 代码中,从而避免数据可能出现的不一致。最后但同样重要的是,查询嵌入在代码中使安全性更高,因为可以在应用程序中直接实现访问控制,从而防止未经授权的访问和不当查询。

那么,现在我们可以了解动态 SQL 的支持范围了。这种动态性在其灵活性上显而易见,即一切都在运行时动态生成,包括查询、条件,甚至表名或字段名,从而使客户端和用户受益。它还以易于管理为特点,因为数据库管理员(DBA)可以在维护数据和数据库时,实时检查所产生的影响,从而避免严重的编译问题。

综上所述,虽然这些信息更多是理论而“实践”较少,但关键在于:没有绝对的对错之分,甚至没有“反派”或“正派”,事实是,对开发内容的了解以及对需求的深入分析,将最终决定选择……

你将站在“原力”的哪一边?