为什么对存储过程的JDBC调用用大括号括起调用?

Mr.*_*Boy 2 java jdbc

从Java我们可以做类似的事情: stmt.execute("SELECT * FROM users"); 但对于存储过程,例如: stmt.execute("{CALL createUser(?,?,?,?)}");

我们为什么需要{}时,这是不正常的SQL要求?

Bev*_*ynQ 5

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

  • 值得一提的是,大括号可用于除函数调用之外的其他内容,例如(日期和时间)文字.例如`{d'2014-07-03'}` (3认同)

Rei*_*eus 3

大括号是存储过程的转义语法。当 JDBC 驱动程序遇到 时{call createUser(?,?,?,?)},它会将这种转义语法转换为数据库使用的本机 SQL 来调用存储过程。