INFILEコマンドによって、Oracle OLAPは指定されたファイルから文入力を読み取ります。
構文
INFILE {file-id|EOF} [NOW] [NLS_CHARSET charset-exp]
引数
入力の読取り元のファイルの名前。file-idはファイルの名前を表すテキスト式です。名前はファイル識別子の標準形式である必要があります。
入力ファイルには、OLAP DML文と、その文によって生成されるプロンプトに対応する応答のみが含まれる必要があります。各文または各応答は、ファイルで別々の行にある必要があります。
現行ファイルからの入力の読取りを終了し、INFILE文の実行元の場所から入力の読取りをOracle OLAPが再開します。INFILE EOFの使用はオプションです。「入力ファイルについて」および「NOWとEOFの両方を指定したINFILE」を参照してください。
Oracle OLAPが、INFILEを含むプログラムが終了するまで待機せずにINFILEが見つかるとすぐに、INFILEで指定される入力ファイルを開いて文を読み取ることを示します。これには、プログラム内で入力ファイルの文をネストする効果があります。「NOWとEOFの両方を指定したINFILE」を参照してください。この引数はfile-idの後に指定する必要があります。
file-idによって指定されるファイルからデータを読み取る際にOracle OLAPが使用するキャラクタ・セットを指定します。これにより、NLS_LANGオプションによる指定の場合と同様に、Oracle OLAPはデータを現行キャラクタ・セットに正確に変換できます。この引数はfile-idの後に指定する必要があります。この引数を省略すると、Oracle OLAPでは、ファイルのデータは、NLS_LANGオプションに記録されているデータベース・キャラクタ・セットを持つものとして処理されます。
注意
入力ファイルについて
入力ファイルの末尾に達すると、Oracle OLAPはINFILE文の実行元の場所から入力の読取りを再開します。これは別の入力ファイルの場合もあります。文INFILE EOFによって入力ファイルを終了する必要はありません。
INFILEは、行の最後にある末尾の空白、および行の最後のテキストと継続マークの間の空白を無視します。さらに、INFILEは空白行を無視します。
NOWキーワードを使用している場合に、入力ファイルが継続文で終了すると、その文は無視されます。たとえば、ファイルが「show -」で終了すると、Oracle OLAPはSHOW文を無視します。
プログラムでのINFILEの使用
NOWキーワードを付けずにINFILE文をプログラムに含めた場合、プログラムが実行を終了するまでINFILE文は実行されません。ネストしたプログラムでは、関連のすべてのプログラムが実行を終了するまでINFILEコマンドは実行されません。また、複数のINFILEコマンドが1つのプログラムによって実行される場合、入力ファイルは指定された順番とは逆に読み取られます。
たとえば、program.a
はprogram.c
をコールするprogram.b
をコールするとします。各プログラムには2つのINFILEコマンドが含まれ、1つは次のプログラムのコールの前、もう1つはそのコールの後にあります(次のコードを参照)。この場合、実行順序はa2
、b2
、c2
、c1
、b1
、a1
になります。
program.a INFILE a1 " program.b INFILE b1 " program.c INFILE c1 INFILE c2 " INFILE b2 " INFILE a2
NOWキーワードを付けてINFILE文をプログラムに含めた場合、INFILE文は即座に実行されます。ただし、NOWキーワードを付けたINFILEには、プログラム・スタックに通常よりも大きな領域が必要です。スタック領域を節約するために、必要な場合にのみNOWキーワードを使用してください。
プログラム以外でのNOWを指定したINFILE
NOWキーワードはプログラム内での使用を想定していますが、他の場合も使用できます。入力ファイルが通常で遅延されていない場合にNOWキーワードを使用しても目立った効果はありません。このキーワードには余分なスタック領域が必要なので、このような場合は使用しないでください。
NOWとEOFの両方を指定したINFILE
NOWとEOFの両方のキーワードを使用した場合、NOWキーワードは無視されます。
ファイル入力された文および応答の表示
ディスク・ファイルからの文を実行に伴ってデバッグ・ファイルにコピーするには、DBGOUTFILEコマンドを参照してください。
例