다음을 통해 공유


C 간격 구조

C 데이터 형식 섹션에 나열된 각 C 간격 데이터 형식 은 동일한 구조를 사용하여 간격 데이터를 포함합니다. SQLFetch, SQLFetchScroll 또는 SQLGetData가 호출되면 드라이버는 데이터를 SQL_INTERVAL_STRUCT 구조로 반환하고, 애플리케이션에서 C 데이터 형식에 대해 지정한 값(SQLBindCol, SQLGetData 또는 SQLBindParameter 호출)을 사용하여 SQL_INTERVAL_STRUCT 내용을 해석하고 구조체의 interval_type 필드를 C 형식에 해당하는 열거형 값으로 채웁니다. 드라이버는 간격의 유형을 확인하기 위해 interval_type 필드를 읽지 않습니다. SQL_DESC_CONCISE_TYPE 설명자 필드의 값을 검색합니다. 매개 변수 데이터에 구조가 사용되는 경우 애플리케이션이 interval_type 필드의 값을 다른 값으로 설정하더라도 드라이버는 APD의 SQL_DESC_CONCISE_TYPE 필드에 지정된 값을 사용하여 SQL_INTERVAL_STRUCT 내용을 해석합니다.

이 구조는 다음과 같이 정의됩니다.

typedef struct tagSQL_INTERVAL_STRUCT  
{  
   SQLINTERVAL interval_type;   
   SQLSMALLINT interval_sign;  
   union {  
         SQL_YEAR_MONTH_STRUCT   year_month;  
         SQL_DAY_SECOND_STRUCT   day_second;  
         } intval;  
} SQL_INTERVAL_STRUCT;  
typedef enum   
{  
   SQL_IS_YEAR = 1,  
   SQL_IS_MONTH = 2,  
   SQL_IS_DAY = 3,  
   SQL_IS_HOUR = 4,  
   SQL_IS_MINUTE = 5,  
   SQL_IS_SECOND = 6,  
   SQL_IS_YEAR_TO_MONTH = 7,  
   SQL_IS_DAY_TO_HOUR = 8,  
   SQL_IS_DAY_TO_MINUTE = 9,  
   SQL_IS_DAY_TO_SECOND = 10,  
   SQL_IS_HOUR_TO_MINUTE = 11,  
   SQL_IS_HOUR_TO_SECOND = 12,  
   SQL_IS_MINUTE_TO_SECOND = 13  
} SQLINTERVAL;  
  
typedef struct tagSQL_YEAR_MONTH  
{  
   SQLUINTEGER year;  
   SQLUINTEGER month;   
} SQL_YEAR_MONTH_STRUCT;  
  
typedef struct tagSQL_DAY_SECOND  
{  
   SQLUINTEGER day;  
   SQLUINTEGER hour;  
   SQLUINTEGER minute;  
   SQLUINTEGER second;  
   SQLUINTEGER fraction;  
} SQL_DAY_SECOND_STRUCT;  

SQL_INTERVAL_STRUCT interval_type 필드는 애플리케이션에 공용 구조체에 보관되는 구조체와 구조체의 멤버가 어떤 관련이 있는지를 나타냅니다. interval_sign 필드에는 간격 선행 필드가 서명되지 않은 경우 SQL_FALSE 값이 있습니다. SQL_TRUE 경우 선행 필드는 음수입니다. 선행 필드 자체의 값은 interval_sign에 관계없이 항상 서명되지 않습니다. interval_sign 필드는 부호 비트로 작동합니다.