[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

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

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

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2010/06/23 16:00:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:lizy No.2

回答回数45ベストアンサー獲得回数14

ポイント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

回答回数342ベストアンサー獲得回数20

以下の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

回答回数45ベストアンサー獲得回数14ここでベストアンサー

ポイント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

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

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

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

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

回答リクエストを送信したユーザーはいません