Java から次のようにします:
stmt.execute("SELECT * FROM users");
しかし、次のようなストアド プロシージャの場合:
stmt.execute("{CALL createUser(?,?,?,?)}");
通常の SQL では必要ないのに、なぜ{
andが必要なのですか?}
JDBC は ODBC から派生しました。実際、最初の jdbc ドライバーは、jdbc から odbc へのブリッジでした。したがって、ODBC 構文を使用することは理にかなっています。中かっこ自体は関数呼び出しを示します。ストアド プロシージャは基本的にユーザー定義関数であるため、中かっこで囲まれています。
中括弧は、ストアド プロシージャのエスケープ構文です。JDBC ドライバーがを検出{call createUser(?,?,?,?)}
すると、このエスケープ構文を、データベースがストアド プロシージャを呼び出すために使用するネイティブ SQL に変換します。