データベース オブジェクトを作成せずに 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 サイトの他の関連記事を参照してください。