ヘッダーをスキップ

Oracle Applications開発者ガイド
リリース12
E06048-01
目次へ
目次
前のページへ
前へ
次のページへ
次へ

Javaストアド・プロシージャを使用したコンカレント・プログラムのコーディング

Javaストアド・プロシージャを使用したコンカレント・プログラムのコーディング

OracleがサポートしているJavaストアド・プロシージャにより、コンカレント処理でJavaストアド・プロシージャを使用するコンカレント・プログラムをサポートできます。

Javaストアド・プロシージャを実行ファイルとして定義し、次にその実行ファイルを使用してコンカレント・プログラムを定義できます。

Javaストアド・プロシージャを使用したコンカレント・プログラムの記述方法

Javaストアド・プロシージャのコンカレント・プログラムを作成する手順は、次のとおりです。

  1. SQLJまたはJDBCコードでストアド・プロシージャを記述します。ログへの記録およびファイルへの出力にはFND_FILEパッケージを使用できます。

  2. データベースにJavaプロシージャをロードします。

  3. データ・ディクショナリにプロシージャをパブリッシュします。

  4. 「コンカレント・プログラム実行ファイル」フォームを使用して実行ファイルを定義します。実行方法「Javaストアド・プロシージャ」を使用してください。実行ファイル名は、パブリッシュされた<package name>.<procedure name>です。

  5. 「コンカレント・プログラム」フォームを使用してコンカレント・プログラムを定義します。

次にSQLJプログラムの例を示します。このプログラムは、コンカレント・プログラムのリストを作成します。

import java.sql.*; // Declare a named iterator



#sql iterator ResIterator(String prog_name, String status); class ProgramsList {

    public static void cp_programs ( String[] errbuf,

                                  int[]  retcode,

                                  int[]  retcode,

                                  String appl_name) {

       ResIterator prog = null;

       int fout = 2;    /* OUTPUT File   */

       int flog = 1;    /* LOG File  */        try {

         #sql prog =

               {select substr(user_concurrent_program_name,1,70)

                         AS prog_name,

                        decode(enabled_flag,'Y','Enabled','N',

                        'Disabled') AS status

                from fnd_concurrent_programs_vl cp,

                        fnd_application_vl a

                where cp.application_id        = a.application_id

                  and a.application_short_name = :appl_name };

putline(fout,

          "        Available Concurrent Programs for " +

                         appl_name, 1);

         putline(fout,

          "        ---------------------------------------------",

                 1);

         putline(fout,"\n", 1);

         putline(fout,

                "PROGRAM NAME

   STATUS",1);

         putline(fout,

"---------------------------------------------------------------------------",1);          // process the results

         while( prog.next() ) {

            putline(fout, prog.prog_name() + "         " +

                        prog.status(), 1);

         }          // close the iterator

         prog.close();

         errbuf[0] = "Completed Normal";

         retcode[0] = 0;

      } catch (SQLException  e) {

           errbuf[0] = "Program Failed";

           try {

              putline(flog, errbuf[0], 1);

           } catch (SQLException ex ) {

             errbuf[0] = "Putline problem";

           }

           retcode[0] = 2;

      }

   }



static void putline( int where, String str_val, int new_line)

           throws SQLException {           if ( new_line == 1)

             #sql {Begin FND_FILE.PUT_LINE( :IN where, :IN str_val ); End;};

          else

             #sql {Begin FND_FILE.PUT( :IN where, :IN str_val); End;};

    }



}

データ・ディクショナリにプロシージャをパブリッシュするには、次のPL/SQLスクリプトを使用します。

create or replace package FND_CONC_JSP  as

/* $Header: ProgramsList.sql 120.0 99/04/26 11:24:10 vvengala noship $ */

Procedure programs_list(errbuf  OUT varchar2,

                          retcode  OUT number,

                          appl_short_name IN varchar2);

end conc_programs;

/

create or replace package body FND_CONC_JSP as

  procedure programs_list(errbuf  OUT varchar2,

                          retcode  OUT number,

                          appl_short_name IN varchar2)

  as language java

  name 'ProgramsList.cp_programs(java.lang.String[], int[], java.lang.String)';

end conc_programs;

/