プライマリ・コンテンツに移動
Pro*C/C++プログラマーズ・ガイド
12c リリース1(12.1)
B71397-03
目次へ移動
目次
索引へ移動
索引

前
次

DECLARE STATEMENT文の使用方法について

方法2、3および4では、次の文を使用することが必要な場合があります。

EXEC SQL [AT db_name] DECLARE statement_name STATEMENT; 

db_nameおよびstatement_nameは、プリコンパイラで使用される識別子で、ホスト変数でもプログラム変数でもありません

DECLARE STATEMENTによって動的SQL文の名前が宣言されます。すると、この動的SQL文はPREPARE、EXECUTE、DECLARE CURSORおよびDESCRIBEで参照できます。デフォルト以外のデータベースで動的SQL文を実行するときに、この文が必要になります。方法2での使用例を次に示します。

EXEC SQL AT remote_db DECLARE sql_stmt STATEMENT; 
EXEC SQL PREPARE sql_stmt FROM :dyn_string; 
EXEC SQL EXECUTE sql_stmt; 

この例では、どこでSQL文をEXECUTEするかをremote_dbによってOracleに指示します。

方法3および方法4では、次の例に示すようにDECLARE CURSOR文がPREPARE文の前にある場合にもDECLARE STATEMENTが必要です。

EXEC SQL DECLARE sql_stmt STATEMENT; 
EXEC SQL DECLARE emp_cursor CURSOR FOR sql_stmt; 
EXEC SQL PREPARE sql_stmt FROM :dyn_string;

一般的な文の順序は次のとおりです。

EXEC SQL PREPARE sql_stmt FROM :dyn_string; 
EXEC SQL DECLARE emp_cursor CURSOR FOR sql_stmt; 

ホスト配列の使用について

静的SQLおよび動的SQL内でのホスト配列の使用方法は似ています。たとえば、動的SQL方法2で入力ホスト配列を使用するには、次の構文を使用します。

EXEC SQL EXECUTE statement_name USING host_array_list; 

host_array_listには1つ以上のホスト配列が含まれます。

同様に、方法3で入力ホスト配列を使用するには、次の構文を使用します。

OPEN cursor_name USING host_array_list; 

方法3で出力ホスト配列を使用するには、次の構文を使用します。

FETCH cursor_name INTO host_array_list; 

方法4では、オプションのFOR句を使用して、入力ホスト配列または出力ホスト配列のサイズをOracleに指示する必要があります。