DBMOpenSearchScanTable

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

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

Parameters
tableId Å×À̺íÀÇ ID
searchFlagDBM_ALL_FIELD : ¸ðµç Çʵå search
(BLOBÀ» Á¦¿ÜÇÑ Çʵåµé Áß¿¡ ã°íÀÚ ÇÏ´Â µ¥ÀÌŸ¿Í °°Àº ŸÀÔÀÇ Çʵ忡 ´ëÇؼ­¸¸ °Ë»ö ¼öÇà)
DBM_ONE_FIELD : ƯÁ¤ Çʵ常 search
searchDataã°íÀÚ ÇÏ´Â ÆÐÅÏ¿¡ ´ëÇÑ Á¤º¸(DBM_STRINGÀÎ Å°°Ë»öÀÏ °æ¿ì, Å° ¹®ÀÚ¿­ ±æÀÌ°¡ 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 {
  FieldId id; /* ¸ðµç Çʵ忡 ´ëÇÑ °Ë»öÀÏ °æ¿ì¿¡´Â »ç¿ëÇÏÁö ¾Ê´Â´Ù */
  FieldDataType type;
  S32 len; /* ¹®ÀÚ¿­À» ã°íÀÚ ÇÒ ¶§ »ç¿ëÇÑ´Ù. */
  union { /* ã°íÀÚ ÇÏ´Â ¹®ÀÚ¿­À̳ª ¼ýÀÚ°ª. */
    S16 int2val;
    S32 int4val;
    P_S8 str; /* ³¡¿¡ '\0'ÀÌ ÀÖ¾î¾ß ÇÑ´Ù */
  }content;
} FieldData;

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

See Also
DBMOpenSearchScanCategory, DBMGetNextRecordId, DBMGetPrevRecordId

Example

  TableId tableId;
  ScanId scanId;
  RecId recId;
  DBMErr ret=DBM_OK;
  int numFields, numExistFields;
  FieldDataInfo fieldDataInfo;
  FieldData keyData, fieldData, searchData;
  SearchFlag searchFlag = DBM_ONE_FIELD;
  
  // 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=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 = DBMGetNextRecordId( scanId, &recId, &numExistFields, fieldDataInfo) >= DBM_OK ) {
     ...
  }