4

在 Java 中,我们会做类似的事情: stmt.execute("SELECT * FROM users"); 但是对于像这样的存储过程: stmt.execute("{CALL createUser(?,?,?,?)}");

为什么我们需要{以及}在普通 SQL 中不需要的时候?

4

3 回答 3

6

JDBC 是从 ODBC 派生的。实际上,第一个 jdbc 驱动程序是 jdbc 到 odbc 的桥接器。所以使用 ODBC 语法是有意义的。大括号本身表示函数调用,存储过程基本上是用户定义的函数,因此它们用大括号包裹。

于 2012-11-29T21:42:28.477 回答
3

花括号是存储过程的转义语法。当 JDBC 驱动程序遇到 时{call createUser(?,?,?,?)},它会将这种转义语法翻译成数据库用来调用存储过程的原生 SQL。

于 2012-11-29T21:28:36.280 回答
1

这是有关 JDBC 转义语法的官方文档: https ://docs.oracle.com/cd/E13157_01/wlevs/docs30/jdbc_drivers/sqlescape.html

以及一些特定于供应商的描述:

于 2018-11-27T16:58:15.920 回答