指定されたすべてのファイルのデータを収集する手順を作成しようとしています。この手順を複数のファイルに使用したい。プロシージャーに任意の数のファイル (たとえば 25 個) を指定できるようにする必要があります。これにより、これらのファイルのすべてのデータが収集されます。
個々のテーブルからデータを収集するスクリプトは、非常に簡単に作成できます。それらの1つは以下のとおりです。
select * From Table_name a
Where a.FILE_ID in pi_fileid
and a.FILE_TYPE = 'L';
また、以下に示すようにテストを試みました。
EXECUTE IMMEDIATE 'select count(*) from Table_name
where file_id in (' || pi_fileid || ')
AND file_type = ''L''
AND status = ''FP''' INTO cnt;
pi_fileid は、ファイル名を含む varchar です。それらはコンマで区切られます。
私のプロシージャの実行呼び出しは次のようになります。
DECLARE
PI_FILETYPE VARCHAR2(200);
PI_DATE DATE;
PI_FILEID VARCHAR2(200);
BEGIN
PI_FILETYPE := 'BLA_BLA';
PI_DATE := '30-dec-2009';
PI_FILEID := (''Z1100E71g'' ,''Y1100E71g'');
GATHER_PKG.GATHEREFILE ( PI_FILETYPE, PI_DATE, PI_FILEID );
COMMIT;
END;
しかし、サーバーは「Z1100E71g.def」ではなく「Z1100E71g.def」を探していると考えているように見えるため、これはデータベースから何も収集しません。したがって、これは何も返しません。
これを行う方法はありますか?