Java プログラムから Oracle データベースを操作しています。

Oracle に SQL 文を投げるのですが、この SQL は結構時間がかかります。
途中でキャンセルしたくなったとき、キャンセルボタンを押すと
Oracle のプロセスを強制終了するようにしたいのですが、
Java で書く場合、どのようにやればいいのでしょうか?
方法を教えてください。
たとえば、SQL 文を投げたとき、このIDを保存して、
キャンセルボタンを押したときにこうやって kill するとかが知りたいです。
実際のプログラムを例示してくれるとうれしいです。
以上、よろしくお願いいたします。

回答の条件
  • 1人2回まで
  • 13歳以上
  • 登録:2010/06/16 15:55:17
  • 終了:2010/06/23 16:00:03

ベストアンサー

id:lizy No.2

lizy回答回数45ベストアンサー獲得回数142010/06/18 00:29:39

ポイント70pt

java.sql.Statement#cancel()を呼びだすことによってキャンセルできるようです。

Statement (Java Platform SE 6)

DBMS およびドライバの両方が SQL 文の終了をサポートする場合に、この Statement オブジェクトを取り消します。このメソッドは、1 つのスレッドが別のスレッドによって実行中の文を取り消すのに使用できます。

ここのページの「Statement.cancelの使用」を見る限り、OracleのJDBCドライバでcancel()メソッドは実装されているようです。

Oracle Database JDBC開発者ガイドおよびリファレンス D トラブルシューティング

id:akagi_paon

おお、ありがとうございます。試してみます!

2010/06/18 11:35:49

その他の回答(1件)

id:koriki-WeKan No.1

koriki-WeKan回答回数342ベストアンサー獲得回数202010/06/16 16:16:48

以下のSQL文にてセッションを強制終了することが可能。

ALTER SYSTEM KILL SESSION sid, #serial;
id:akagi_paon

いちおう

select sys_context('userenv','sid') from dual
select serial# from v$session where sid=?

でsidとserial#はとれそうですね。

2010/06/16 16:34:10
id:lizy No.2

lizy回答回数45ベストアンサー獲得回数142010/06/18 00:29:39ここでベストアンサー

ポイント70pt

java.sql.Statement#cancel()を呼びだすことによってキャンセルできるようです。

Statement (Java Platform SE 6)

DBMS およびドライバの両方が SQL 文の終了をサポートする場合に、この Statement オブジェクトを取り消します。このメソッドは、1 つのスレッドが別のスレッドによって実行中の文を取り消すのに使用できます。

ここのページの「Statement.cancelの使用」を見る限り、OracleのJDBCドライバでcancel()メソッドは実装されているようです。

Oracle Database JDBC開発者ガイドおよびリファレンス D トラブルシューティング

id:akagi_paon

おお、ありがとうございます。試してみます!

2010/06/18 11:35:49

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません