as_DBMOpenSearchScanTable

Description
ƯÁ¤ Å×ÀÌºí¿¡¼­ ƯÁ¤ ¹®ÀÚ¿­À» Æ÷ÇÔÇϰųª, ƯÁ¤ ¼ýÀÚ¸¦ °¡Áø ·¹Äڵ带 Àбâ À§ÇÑ ½ºÄµÀ» ÃʱâÈ­ÇÑ´Ù.

Syntax
DBMErr as_DBMOpenSearchScanTable(TableId tableId, SearchFlag searchFlag, FieldData *searchData, ScanId* scanId);

Parameters
tableId Å×À̺íÀÇ ID
searchFlag DBM_ALL_FIELD : ¸ðµç Çʵå search
(BLOBÀ» Á¦¿ÜÇÑ Çʵåµé Áß¿¡ ã°íÀÚ ÇÏ´Â µ¥ÀÌŸ¿Í °°Àº ŸÀÔÀÇ Çʵ忡 ´ëÇؼ­¸¸ °Ë»ö ¼öÇà)
DBM_ONE_FIELD : ƯÁ¤ Çʵ常 search
searchData ã°íÀÚ ÇÏ´Â ÆÐÅÏ¿¡ ´ëÇÑ Á¤º¸
¹®ÀÚ¿­ÀÎ °æ¿ì, ÃÖ´ë ±æÀÌ´Â PATTERN_LEN
scanIdopenµÈ ½ºÄµ ID

Returns
value¼³¸í
DBM_OK¼º°øÀûÀ¸·Î ¼öÇàµÈ °æ¿ì
DBM_TOO_MANY_SCANSÀÌ¹Ì openµÈ ½ºÄµÀÇ ¼ö°¡ NUM_SCANSÀÎ °æ¿ì
DBM_INVALID_TABLE_IDÁÖ¾îÁø Å×À̺í id¸¦ °®´Â Å×À̺íÀÌ Á¸ÀçÇÏÁö ¾Ê´Â °æ¿ì
DBM_INVALID_FLAGsearchFlag,°¡ DBM_ALL_FIELDµµ DBM_ONE_FIELDµµ ¾Æ´Ñ °æ¿ì
DBM_INVALID_SEARCH_DATA ÇØ´ç Çʵå id°¡ Å×ÀÌºí ½ºÅ°¸¶¿¡ Á¸ÀçÇÏÁö ¾Ê´Â °æ¿ì,
ÇʵåÀÇ µ¥ÀÌŸ ŸÀÔÀÌ Å×ÀÌºí ½ºÅ°¸¶¿Í ÀÏÄ¡ÇÏÁö ¾Ê´Â °æ¿ì,
BLOB Çʵ带 search Çʵå·Î ÁöÁ¤ÇÑ °æ¿ì
patternÀÇ ±æÀÌ°¡ PATTERN_LENº¸´Ù Å« °æ¿ì
DBM_DB_NOT_INITEDµ¥ÀÌŸº£À̽º°¡ ÃʱâÈ­µÇ¾î ÀÖÁö ¾ÊÀº °æ¿ì

Comments
ã°íÀÚ ÇÏ´Â ÆÐÅÏÀÌ ¹®ÀÚ¿­ÀÎ °æ¿ì¿¡´Â substring matchµÇ´Â ·¹Äڵ带 °Ë»öÇÏ°í, ¼ýÀÚ°ªÀ» ã´Â °æ¿ì¿¡´Â exact matchµÇ´Â ·¹Äڵ带 °Ë»öÇÑ´Ù.

¸Å°³º¯¼ö¿¡¼­ »ç¿ëµÇ´Â searchDataÀÇ ÀڷᱸÁ¶´Â ´ÙÀ½°ú °°´Ù.
typedef struct {
  FieldIdid;/* ¸ðµç Çʵ忡 ´ëÇÑ °Ë»öÀÏ °æ¿ì¿¡´Â »ç¿ëÇÏÁö ¾Ê´Â´Ù */
  FieldDataType  type;
  S32 len;/* ¹®ÀÚ¿­À» ã°íÀÚ ÇÒ ¶§ »ç¿ëÇÑ´Ù. */
  union {/* ã°íÀÚ ÇÏ´Â ¹®ÀÚ¿­À̳ª ¼ýÀÚ°ª. */
  S16int2val;
  S32int4val;
  P_S8 str; /* ³¡¿¡ '\0'ÀÌ ÀÖ¾î¾ß ÇÑ´Ù */
  }content;
} FieldData;

½ºÄµÀ» openÇÑ ÀÌÈÄ, ÃÖÃʷΠȣÃâµÇ´Â as_DBMGetNextRecordId ¶Ç´Â as_DBMGetPrevRecordId´Â ÁÖ¾îÁø searchData¸¦ Æ÷ÇÔÇϴ óÀ½ ·¹ÄÚµå ID¸¦ ¹ÝȯÇÑ´Ù.

See Also
as_DBMOpenSearchScanCategory, as_DBMGetNextRecordId, as_DBMGetPrevRecordId

Example
TableId tableId; ScanId scanId;
RecId recId; DBMErr ret=DBM_OK;
int numFields, numExistFields; FieldDataInfo fieldDataInfo;
FieldData keyData, fieldData;
SearchFlag searchFlag = DBM_ONE_FILED;

// Get tableId, catId
// assign the search data for the primary index field
searchData.id=0;
searchData.type=DBM_STRING;

searchData.content.str = Lmalloc( strlen("keyString") + 1);
strcpy(searchData.content.str, "searchString" );
ret=as_DBMOpenSearchScanTable( tableId, searchFlag, searchData, &scanId);
if( ret < DBM_OK ) // error handling
numFields = NUM_FIELDS;
...
/* allocate space for fieldDataInfo */
fieldDataInfo =(FieldDataInfo*)Lmalloc( sizeof(FieldDataInfo) * numFields );
while( (ret = as_DBMGetNextRecordId( scanId, &recId, &numExistFields,
   fieldDataInfo) >= DBM_OK ) {
   ...
}