どのプリコンパイラ・オプションも、コマンドラインや(CONFIG
以外は)構成ファイルから入力できます。また、インラインで入力できるオプションも多数あります。プリコンパイラでは実行時に、これら3つのソースすべてから入力されたオプションを受け入れます。
EXEC ORACLE
機能は、プリコンパイル中にオプションを変更するときに特に便利です。たとえば、HOLD_CURSOR
とRELEASE_CURSOR
の値を文ごとに変更できます。インライン・オプションを使用して実行時のパフォーマンスを最適化する方法については、パフォーマンス・チューニングを参照してください。
インラインでのオプションの指定は、オペレーティング・システムでコマンドラインでの入力文字数が制限されている場合にも便利であり、インライン・オプションは構成ファイルに格納できます(これについては次の項で説明します)。
EXEC ORACLE文は、同じオプションを指定する別のEXEC ORACLE文によって指定値(テキスト)が変更されるまで有効です。たとえば、HOLD_CURSOR=NO
は、HOLD_CURSOR=YES:
が指定されるまで有効です。
EXEC SQL BEGIN DECLARE SECTION; emp_name CHARACTER(20); emp_number INTEGER; salary REAL; dept_number INTEGER; EXEC SQL END DECLARE SECTION; ... EXEC SQL WHENEVER NOT FOUND GOTO no_more; EXEC ORACLE OPTION (HOLD_CURSOR=NO); EXEC SQL DECLARE emp_cursor CURSOR FOR SELECT EMPNO, DEPTNO FROM EMP; EXEC SQL OPEN emp_cursor; display 'Employee Number Dept'; display '--------------- ----'; LOOP EXEC SQL FETCH emp_cursor INTO :emp_number, :dept_number; display emp_number, dept_number; ENDLOOP; no_more: EXEC SQL WHENEVER NOT FOUND CONTINUE; LOOP display 'Employee number? '; read emp_number; IF emp_number = 0 THEN exit loop; EXEC ORACLE OPTION (HOLD_CURSOR=YES); EXEC SQL SELECT ENAME, SAL INTO :emp_name, :salary FROM EMP WHERE EMPNO = :emp_number; display 'Salary for ', emp_name, ' is ', salary; ENDLOOP; ...
構成ファイル内の各レコード(行)には、コマンドライン・オプションが1つ入っています。たとえば、構成ファイルには、FIPS
、MODE
およびSQLCHECKの各オプションのデフォルト値を設定する次の行が含まれている場合があります。
FIPS=YES MODE=ANSI SQLCHECK=SEMANTICS
Oracleプリコンパイラごとに、独自のシステム構成ファイルを設定できます。ファイルの名前や場所は、言語やシステム固有です。ファイルが見つからない場合、警告が表示されますが、プリコンパイラでは処理が続行されます。
1つの言語にはシステム構成ファイルが1つしかありませんが、ユーザー構成ファイルはいくつでも作成できます。特定のユーザー構成ファイルの名前と場所を指定するには、新しいコマンドライン・オプションCONFIGを次のように指定します。
... CONFIG=<filename>
構成ファイルはネストできません。したがって、構成ファイルでCONFIG
オプションは指定できません。また、インラインでCONFIG
を指定することもできません。