Oracle Applications開発者ガイド リリース12 E06048-01 | 目次 | 前へ | 次へ |
OracleがサポートしているJavaストアド・プロシージャにより、コンカレント処理でJavaストアド・プロシージャを使用するコンカレント・プログラムをサポートできます。
Javaストアド・プロシージャを実行ファイルとして定義し、次にその実行ファイルを使用してコンカレント・プログラムを定義できます。
Javaストアド・プロシージャのコンカレント・プログラムを作成する手順は、次のとおりです。
SQLJまたはJDBCコードでストアド・プロシージャを記述します。ログへの記録およびファイルへの出力にはFND_FILEパッケージを使用できます。
データベースにJavaプロシージャをロードします。
データ・ディクショナリにプロシージャをパブリッシュします。
「コンカレント・プログラム実行ファイル」フォームを使用して実行ファイルを定義します。実行方法「Javaストアド・プロシージャ」を使用してください。実行ファイル名は、パブリッシュされた<package name>.<procedure name>です。
「コンカレント・プログラム」フォームを使用してコンカレント・プログラムを定義します。
次に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;
/