CdbrEqlStatement::SetParamメソッド
機能
edmSQL文の?パラメタの設定
形式
// Boolean型の値を設定する場合
DmaBoolean SetParam (
DmaInteger32 lParamIndex,
DmaBoolean bParam)
// Integer32型の値を設定する場合
DmaBoolean SetParam (
DmaInteger32 lParamIndex,
DmaInteger32 lParam)
// String型の値を設定する場合
DmaBoolean SetParam (
DmaInteger32 lParamIndex,
pDmaString_T pParam)
// BinaryValue型の値を設定する場合
DmaBoolean SetParam (
DmaInteger32 lParamIndex,
DmaBinaryValue* pbvParamParam)
struct DmaBinaryValue{
DmaUInteger32 cbBytes;
pDmaBinary pbBytes;
};
詳細
edmSQL文中の?パラメタの値を設定するメソッドです。
このメソッドで設定できる値を次に示します。
このメソッドで設定した?パラメタの値は,CdbrEqlStatement::Executeメソッドのコール時に有効になります。?パラメタが存在しないedmSQL文を実行する場合は,このメソッドをコールする必要はありません。
?パラメタの値は,最後に設定した値が有効になります。設定し直していない?パラメタの値は有効なままです。ただし,CdbrEqlStatement::Setメソッドがコールされた場合には,すでに設定されている?パラメタのすべての値が無効になります。つまり,CdbrEqlStatement::Setメソッドで設定したedmSQL文の,すべての?パラメタについて値を設定し直す必要があります。
なお,?パラメタにOIIDを設定する場合にはCdbrEqlStatement::SetOIIDParamメソッドを使用し,DMAオブジェクトを設定する場合にはCdbrEqlStatement::SetObjParamメソッドを使用してください。
CdbrEqlStatement::Initializeメソッドがコールされていない状態でこのメソッドをコールした場合は,エラーになります。
戻り値がDMA_FALSEの場合,設定された?パラメタの値は保証できません。
edmSQL文中の?パラメタにBinaryValue型の値を設定する例を次に示します。
//// 実行するedmSQL文をセット
brc = cEql->Set( (pDmaString_T)
"Select score_concept(edmProp_ConceptStIndex)"
" From usrClass_ContentSearchDV"
" Where concept_with_score"
"( edmProp_ConceptStIndex, ? AS BINARY(5M)) IS TRUE" );
if ( DMA_TRUE != brc ) {
//エラー処理
}
//?パラメタをセット(?:{"この文字列を検索します"})
DmaBinaryValue pbvBinary;
char sCondition[1024];
strcpy(sCondition, "{¥"この文字列を検索します¥"}");
pbvBinary.cbBytes =
(DmaUInteger32)sizeof("{¥"この文字列を検索します¥"}");
pbvBinary.pbBytes = (pDmaBinary)sCondition;
brc = cEql.SetParam(1, &pbvBinary);
if ( DMA_TRUE != brc ) {
//エラー処理
}
//// edmSQL文の実行
brc = cEql->Execute();
if ( DMA_TRUE != brc ) {
//エラー処理
}
引数
lParamIndex(入力)
edmSQL文中の?パラメタの出現順序を指定します。
1~(edmSQL文中の?パラメタの数)の範囲で指定してください。0以下の値を指定した場合には,エラーになります。0より大きい値で範囲外の値を指定した場合は,CdbrEqlStatement::Executeメソッドのコール時にエラーになります。
また,同一の?パラメタに対して,複数回,値を設定した場合には,最後に設定した値が有効になります。
bParam,lParam,pParam,pbvParamParam(入力)
edmSQL文中の?パラメタに設定する値を指定します。
指定した値の型と要素の型が一致しないなどで構文不正となる場合には,CdbrEqlStatement::Executeメソッドのコール時にエラーになります。
なお,このメソッドでは,この引数で指定された値が妥当かどうかのチェックはしません。ただし,String型の値を設定するときに値としてNULLを指定した場合は,エラーになります。
戻り値
DMA_TRUE 正常終了
DMA_FALSE 異常終了
戻り値の詳細
major_code | minor_code | 説明 | 対処 |
---|---|---|---|
ERR_DBR | ERR_EQL_NOT_INITIALIZE | 初期化が実行されていません。 | 初期化を実行してください。 |
ERR_DMA | DMARC_BAD_PARAMETER | 不正な引数が入力されました。 | 正しい引数を指定してください。 |
ERR_DMA | DMARC_NO_MEMORY | メモリ不足で実行できません。 | メモリを増設してください。またはメモリを大量に消費しているアプリケーションを停止させて,処理を再実行してください。 |
ERR_DMA | DMARC_UNEXPECTED | 予期しないエラーが発生しました。 | 処理を終了してください。 |