让我在 OO 语言中使用 SQL 感到恼火的一件事是必须在字符串中定义 SQL 语句。
当我在 IBM 大型机上工作时,这些语言使用 SQL 预处理器从本机代码中解析 SQL 语句,因此这些语句可以用明文 SQL 编写,而无需对字符串进行混淆,例如在 Cobol 中有一个EXEC SQL 。 ... END-EXEC语法结构,允许将纯 SQL 语句嵌入到 Cobol 代码中。
<pure cobol code, including assignment of value
to local variable HOSTVARIABLE>
EXEC SQL
SELECT COL_A, COL_B, COL_C
INTO :COLA, :COLB, :COLC
FROM TAB_A
WHERE COL_D = :HOSTVARIABLE
END_EXEC
<more cobol code, variables COLA, COLB, COLC have been set>
...这使得 SQL 语句非常容易阅读和检查错误。在EXEC SQL .... END-EXEC标记之间没有缩进、换行等限制,因此您可以根据喜好格式化 SQL 语句。
请注意,此示例适用于单行选择,当需要多行结果集时,编码是不同的(但仍然易于阅读)。
所以,以Java为例
是什么让“旧 COBOL”方法不受欢迎?不仅是 SQL,而且系统调用也可以通过这种方法变得更具可读性。我们称之为嵌入式外语预处理器方法。
用于 SQL的嵌入式外语预处理器是否有用?您会看到能够在 java 代码中编写本机 SQL 语句的好处吗?
编辑
我真的在问您是否认为 OO 语言中的 SQL 是一种倒退,如果不是,那么可以做些什么来使它变得更好。