ホームページ > データベース > mysql チュートリアル > JDBC を使用して Oracle から DBMS_OUTPUT を取得するにはどうすればよいですか?

JDBC を使用して Oracle から DBMS_OUTPUT を取得するにはどうすればよいですか?

Susan Sarandon
リリース: 2025-01-02 16:59:40
オリジナル
428 人が閲覧しました

How to Retrieve DBMS_OUTPUT from Oracle Using JDBC?

JDBC を使用した Oracle の DBMS_OUTPUT.GET_LINES からの出力の取得

JDBC は、Oracle の dbms_output.get_lines プロシージャによって生成された出力に、作成せずにアクセスする手段を提供します。データベース内の追加オブジェクト。これを実現する方法は次のとおりです:

  1. サーバー出力バッファリングを有効にする: 出力にアクセスする前に、現在の接続でバッファリングを有効にしてサーバー出力をキャプチャします:

    dbms_output.enable();
    ログイン後にコピー
  2. 出力を PL/SQL に保存表: サーバー出力を取得するには、PL/SQL で表を作成して出力を保存します:

    create type DBMSOUTPUT_LINESARRAY as table of varchar2(255);
    ログイン後にコピー
  3. Call DBMS_OUTPUT.GET_LINES: を使用します。 dbms_output.get_lines を呼び出し、PL/SQL 表を out として渡す CallableStatementパラメータ:

    CallableStatement call = c.prepareCall(
     "declare \n"
      + "  num integer := 1000;\n" // Adjust this value as needed
      + "begin \n"
    
      + "  dbms_output.get_lines(?, num);\n"
    
      + "  dbms_output.disable();\n"
      + "end;\n"
    );
    call.registerOutParameter(1, Types.ARRAY, "DBMSOUTPUT_LINESARRAY");
    ログイン後にコピー
  4. サーバー出力バッファリングを無効にする: 出力を取得した後、潜在的なバッファ オーバーフローを防ぐためにバッファリングを無効にします:

    dbms_output.disable();
    ログイン後にコピー
  5. 出力へのアクセス: 出力は利用可能ですoutパラメータに入力します。 JDBC API を使用してテーブルの要素にアクセスできます。
  6. コード例: プロセスを示すコード スニペットは次のとおりです:

    try (CallableStatement call = c.prepareCall(
     "declare \n"
      + "  num integer := 1000;\n" 
      + "begin \n"
    
      + "  dbms_output.put_line('abc');\n"
      + "  dbms_output.put_line('hello');\n"
      + "  dbms_output.put_line('so cool');\n"
    
      + "  dbms_output.get_lines(?, num);\n"
    
      + "  dbms_output.disable();\n"
      + "end;\n"
    )) {
     call.registerOutParameter(1, Types.ARRAY, "DBMSOUTPUT_LINESARRAY");
     call.execute();
    
     Array array = null;
     try {
         array = call.getArray(1);
         System.out.println(Arrays.asList((Object[]) array.getArray()));
     }
     finally {
         if (array != null)
             array.free();
     }
    }
    ログイン後にコピー

このアプローチは Oracle 12c 以降で機能することに注意してください。 Oracle 11g では、補助 SQL TABLE タイプの使用が必要になる場合があります。

以上がJDBC を使用して Oracle から DBMS_OUTPUT を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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