gpt4 book ai didi

sql - 嵌入式 SQL 与动态 SQL

转载 作者:行者123 更新时间:2023-12-04 14:05:03 31 4
gpt4 key购买 nike

我目前正在做一个 *cough*Oracle*cough* 数据库主题。讲师介绍embedded SQL作为让其他语言(例如 C、C++)与(Oracle)数据库交互的方式。

我自己做了一些数据库工作(在 mysql 上),我使用动态 sql。

由于嵌入式 SQL 似乎仅限于少数几个 Oracle 和其他几个,所以这更像是一种锁定尝试,还是嵌入式 SQL 有真正的值(value)?

编辑:我刚刚意识到这一课是在上完 PL/SQL 课之后进行的,这一事实可能很重要。

原问题 询问参数化 SQL(现在由“动态 sql”代替以改进问题)。

旁白:我在想,我买的这本约 30 美元的“SQL 和关系理论”书比这门数据库课教给我的东西更多。

最佳答案

嵌入式 SQL 在编译时解析。一个优点是您也可以在编译时捕获语法错误,这可以防止某些类型的令人尴尬的运行时错误。这也意味着 SQL 注入(inject)漏洞无法在运行时改变您的预期 SQL 语法。

如今,几乎所有 SQL 程序员都将 SQL 放入字符串中,并在运行时解析这些字符串。这就是动态 SQL 的原始定义。这也称为调用级接口(interface) (CLI)。

由于以这种方式使用 SQL 非常普遍,因此“动态 SQL”的新定义已成为常见用法,即人们将这个术语用于他们根据应用程序逻辑和变量有条件地构建的 SQL 查询,而不是作为应用程序中的固定字符串,用于指定整个查询。

参数化查询是完全独立的区别。您可以将参数占位符放入嵌入式或动态 SQL 中。

对于它的值(value),我不认识这些天使用嵌入式 SQL 的人(除了维护遗留应用程序架构)。我什至愿意与您的讲师争论他们正在教授无关紧要的过时技术。

  • Oracle 11g 依然支持多种 SQL precompilers .
  • IBM DB2 UDB 9.7 支持名为 PREP 的 SQL 预处理器.
  • Microsoft SQL Server 有 deprecated支持 MS SQL Server 2000 之后的嵌入式 SQL。
  • 据报道,Sybase 也已停止使用嵌入式 SQL(但我找不到可引用的引用资料)。
  • PostgreSQL 仍然支持一个名为 ECPG 的预处理器。用于嵌入式 SQL。
  • MySQL 从未支持嵌入式 SQL。
  • 据我所知,SQLite 不支持 SQL 预处理器。

  • 这占 RDBMS 市场份额的绝大多数。

    关于sql - 嵌入式 SQL 与动态 SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7383121/

    31 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com