- PR -

JDBCでPL/SQLの標準出力を得るには

1
投稿者投稿内容
おかもと
大ベテラン
会議室デビュー日: 2003/06/08
投稿数: 182
投稿日時: 2005-06-20 16:52
SQL*PlusでPL/SQLを実行する場合は
set serveroutput on;
を実行することによりDBMS_OUTPUT.PUT_LINEの結果を
表示することが出来ますが、JDBCでJavaアプリケーションから
呼び出す場合は、前述の"set serveroutput on;"の方法が
分かりません。

JavaからPL/SQLを呼ぶ場合のデバッグ出力の仕方を
ご存知の方がおられましたらご教示お願いします。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2005-06-20 17:10
JDBC を介してデータベースにアクセスする場合、PL/SQL は無関係です。
おそらく PL/SQL のコマンドは使えないかと・・・。
おかもと
大ベテラン
会議室デビュー日: 2003/06/08
投稿数: 182
投稿日時: 2005-06-20 17:57
やはりそうですか、CallableStatement#executeの引数に
渡してみると

java.sql.SQLException: ORA-00922: missing or invalid option

となりました。だめっぽいですね。

ありがとうございました。
カーニー
ぬし
会議室デビュー日: 2003/09/04
投稿数: 358
お住まい・勤務地: 東京
投稿日時: 2005-06-20 20:06
どこにデバッグログを出力させたいかによるのですが、例えばutl_fileパッケージを使うとDBサーバ上のファイルに出力させることができます。

ちなみに set serveroutput on はSQL*Plusのコマンドです。
また、DBMS_OUTPUT.PUT_LINEの結果は同一セッションからDBMS_OUTPUT.GET_LINEで取得することができます。つまりDBMS_OUTPUT.GET_LINE自体をJDBC経由で実行する必要があるので、ちょっと面倒かもしれません。
おかもと
大ベテラン
会議室デビュー日: 2003/06/08
投稿数: 182
投稿日時: 2005-06-20 23:58
そうですか、GET_LINEを実行すればよいのですね。
ただし、面倒なので普通にSQL*Plusから実行するのが
良さそうですね。

一応、明日試してみようと思います。ありがとうございました。
おかもと
大ベテラン
会議室デビュー日: 2003/06/08
投稿数: 182
投稿日時: 2005-06-21 22:54
GET_LINEは指定したVARCHAR2変数にPUT_LINEした行を取り込むという物で、
デバッグに使うにはやはり回りくどいですね。JAVAから呼び出すこと自体が
目的ではないので、素直にSQL*Plusで実行します。
1

スキルアップ/キャリアアップ(JOB@IT)