4

Java から次のようにします: stmt.execute("SELECT * FROM users"); しかし、次のようなストアド プロシージャの場合: stmt.execute("{CALL createUser(?,?,?,?)}");

通常の SQL では必要ないのに、なぜ{andが必要なのですか?}

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 に答える