2.7.1 検索条件としての要素の利用

次に示すSQLのARRAY句を利用すれば,レコードを検索したり更新するときの検索条件に繰り返し列の要素が指定できます。検索条件の要素に?パラメタを利用することもできます。

ARRAY(繰り返し列名〔,繰り返し列名〕)…[ANY](検索条件)

検索条件とする場合,ARRAY句を用い繰り返し列であることを宣言します。

<この項の構成>
(1) 繰り返し列の要素を使った条件設定
(2) 繰り返し列の要素に?パラメタを使った条件設定

(1) 繰り返し列の要素を使った条件設定

検索条件として繰り返し列を利用する場合も,基本的な設定方法は通常のレコードを扱う場合と同じです。通常のレコードでの条件設定と異なるのは,SQL文の条件として繰り返し列を設定するときにARRAY句で指定する点です。基本的には,SQL文のWHERE句に要素の値を条件として設定し,レコードを特定します。

(例)繰り返し列F1の値として1を持ち,F2に100以上の値を持つレコードを検索する。

//////////////////////////////////////////////////////////////
/// SQLの実行(検索) - DBStatementクラスでSELECT文を指定

pStatement = pConnect->CreateStatement();
pStatement->SetResultSetType(TYPE_NONE);    // 排他オプションの設定
pStatement->Execute(                        // SELECT文の設定
         "SELECT * FROM TABLE1 WHERE ARRAY(F1,F2) [ANY]
                                                   (F1=1 AND F2>=100)");

(2) 繰り返し列の要素に?パラメタを使った条件設定

繰り返し列の要素に?パラメタを指定した場合,?パラメタの値はSetParamメソッドで設定します。

(例) 繰り返し列F1に1から100の値を持つレコードを削除する。

//////////////////////////////////////////////////////////////
/// SQLの実行(削除)
/// - DBPreparedStatementクラスで?パラメタのあるDELETE文を指定

  // DBPreparedStatementオブジェクトの生成
pStatement = pConnect->CreatePreparedStatement(
             "DELETE FROM TABLE1 WHERE ARRAY (F1)[ANY]
                                       (F1 > ? AND F1 < ? )");

pStatement->Execute();               // SQL文の解析
pStatement->SetParam(1,1);           // 1番目の?パラメタへ値を設定
pStatement->SetParam(2,100);         // 2番目の?パラメタへ値を設定
pStatement->ExecuteUpdate();         // 実行