ホームページ > データベース > mysql チュートリアル > データベースオブジェクトを作成せずにJDBCでOracleのDBMS_OUTPUT.GET_LINESをフェッチするにはどうすればよいですか?

データベースオブジェクトを作成せずにJDBCでOracleのDBMS_OUTPUT.GET_LINESをフェッチするにはどうすればよいですか?

DDD
リリース: 2024-12-31 18:38:10
オリジナル
694 人が閲覧しました

How to Fetch Oracle's DBMS_OUTPUT.GET_LINES in JDBC Without Creating Database Objects?

データベース オブジェクトを作成せずに JDBC で DBMS_OUTPUT.GET_LINES を取得する

Oracle では、DBMS_OUTPUT.GET_LINES はストアド プロシージャまたはストアド プロシージャから出力を取得するメカニズムを提供します。その他のデータベース操作。このプロセスを容易にするためにデータベースに追加のオブジェクトを作成することは可能ですが、このオーバーヘッドを回避することが望ましい場合があります。この記事では、外部データベース エンティティに頼らずに、JDBC を使用して Java で DBMS_OUTPUT.GET_LINES 出力を取得する方法について説明します。

出力バッファリングの有効化

最初のステップは、出力バッファリングを有効にすることです。 DBMS_OUTPUT.ENABLE() を使用します。これにより、データベース操作の実行中にサーバー出力をキャプチャできます。

出力のキャプチャ

出力をキャプチャするには、DBMS_OUTPUT.GET_LINES() が使用されます。このプロシージャは、指定された行数の出力を SQL カーソルに取得します。結果を受け取るには、出力パラメータを「DBMSOUTPUT_LINESARRAY」タイプの配列として登録することが重要です。

出力の取得

DBMSOUTPUT_LINESARRAY には、出力を表すオブジェクトの配列が含まれています。線。実際の出力を取得するには、JDBC の getArray() メソッドを使用して配列を取得します。

サンプル コード

try (CallableStatement call = c.prepareCall(
    //这段代码用于设置enable output buffering,在DBMS_OUTPUT.PUT_LINE()与DBMS_OUTPUT.GET_LINES()之间执行
    "declare num integer := 1000; begin dbms_output.enable(); ..."
)) {
    // ... remaining code to capture and print output
}
ログイン後にコピー

jOOQ Integration

SQL を操作するための Java ライブラリである jOOQ は、自動的にサーバー実行から出力を取得します。 Settings オブジェクトで withFetchServerOutputSize() を設定すると、jOOQ はクエリの実行時にサーバー出力を取得します。

推奨事項: DBMS_OUTPUT.GET_LINE よりも DBMS_OUTPUT.GET_LINES

一方、DBMS_OUTPUT.GET_LINE一度に 1 行を返します。使用することを強くお勧めします。代わりに DBMS_OUTPUT.GET_LINES を使用します。ベンチマークでは、DBMS_OUTPUT.GET_LINES が JDBC から呼び出された場合に大幅に高速であることが示されました。

以上がデータベースオブジェクトを作成せずにJDBCでOracleのDBMS_OUTPUT.GET_LINESをフェッチするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート