什么是嵌入式SQL?

时间:2011-07-22 16:08:48

标签: sql delphi

例如,Delphi有组件TADOQuery,TADOStoredProcedure,TADOtable。

它们代表嵌入式SQL吗?

嵌入式SQL与在编程语言中使用SQL有什么区别?

3 个答案:

答案 0 :(得分:4)

不,TADO*不是嵌入式SQL。

嵌入式SQL是一种(大多是过时的)技术,您可以在代码中编写特殊分隔的SQL,并使用预处理应用程序将其转换为直接的DB API调用。

如果您愿意,可以在Chapter 14 of the InterBase Embedded SQL guide [PDF]中阅读相关内容。

答案 1 :(得分:4)

没有那些Delphi组件不是嵌入式SQL。在嵌入式SQL中,SQL语句与常规代码混合在一起,我所知道的最常见的形式是ESQL / C.它应被视为已弃用。

它的工作方式是一个预处理器,它将所有与SQL相关的东西翻译成宿主语言,并且预翻译的代码通过宿主语言编译器提供。

基于PostgreSQL的ESQL / C实现的简短片段:

void showesql() {
    EXEC SQL BEGIN DECLARE SECTION;
    int FooBar;
    VARCHAR DooDad;
    EXEC SQL END DECLARE SECTION;

    EXEC SQL DECLARE foo_bar CURSOR FOR
        SELECT number, ascii FROM foo
        ORDER BY ascii;
    EXEC SQL OPEN foo_bar;
    EXEC SQL FETCH foo_bar INTO :FooBar, DooDad;
    printf ("number is %d and ascii was %s\n",FooBar, DooDad);
    EXEC SQL CLOSE foo_bar;
    EXEC SQL COMMIT;
}

根据我的经验,在这样的代码中工作非常困难,这就是为什么这种曾经非常常见的技术被放弃了。

答案 2 :(得分:2)

嵌入式SQL在程序代码中使用SQL语句

http://en.wikipedia.org/wiki/Embedded_SQL