2

DBはオラクルです。

ストアドプロシージャと関数に使用Connection.setAutoCommitしたい。SQLそれはうまくいきますか?

私が使用する呼び出し手順についてCallableStatement

4

3 に答える 3

0

はい、動作します。実際、自動コミットはデフォルトでオンになっています。このではアイデアを提供しますが、時間を節約するために:

デフォルトでは、JDBC の自動コミット機能はオンになっています。つまり、各 SQL ステートメントは実行時にコミットされます。プログラムで複数の SQL ステートメントが実行される場合は、自動コミットをオフにすることでパフォーマンスをわずかに向上させることができます。

CallableStatement 部分も読んでください。

思い出していただけると思いますが、CallableStatement オブジェクトは、データベース ストアド プロシージャの実行に使用されます。CallableStatement オブジェクトはすべての JDBC SQL 実行インターフェイスの中で最もパフォーマンスが遅いため、最後まで保存しました。ストアド プロシージャを呼び出す方が SQL を使用するよりも高速であると一般に信じられているため、これは直感に反するように聞こえるかもしれませんが、それはまったく正しくありません。単純な SQL ステートメントと、同じタスクを実行するストアド プロシージャ コールがある場合、単純な SQL ステートメントは常により高速に実行されます。なんで?ストアド プロシージャを使用すると、SQL ステートメントを実行するのに必要な時間だけでなく、プロシージャ コール自体のオーバーヘッドを処理するのに必要な時間もあるからです。

アプリケーションのパフォーマンスに関する決定を下すのに役立つと思います。

于 2012-07-10T11:37:14.450 に答える
0

動作しません、connection.setAutoCommit(true)、この接続では Java オブジェクトです。ストアド プロシージャで同じものを使用することはできません。

autocommit という名前の sql システム変数があります。ストアド プロシージャを作成するときに on に設定すると、プロシージャは実行しようとしている結果を自動コミットします。

于 2012-07-10T11:35:25.207 に答える
-1

一言で言えば:はい。ストアド プロシージャにトランザクション ロジックを埋め込まないように注意してください。すべてを JDBC ドライバーまたはトランザクション マネージャーに任せます。

自分で試して見るに勝るものはありません。ここで質問するよりも良いと思います。

于 2012-07-10T11:34:00.387 に答える