Structure d’intervalle C
Chacun des types de données d’intervalle C répertoriés dans la section Types de données C utilise la même structure pour contenir les données d’intervalle. Lorsque SQLFetch, SQLFetchScroll ou SQLGetData est appelé, le pilote retourne des données dans la structure SQL_INTERVAL_STRUCT, utilise la valeur spécifiée par l’application pour les types de données C (dans l’appel à SQLBindCol, SQLGetData ou SQLBindParameter) pour interpréter le contenu de SQL_INTERVAL_STRUCT et remplit le champ interval_type de la structure avec la valeur d’énumération correspondant au type C. Notez que les pilotes ne lisent pas le champ interval_type pour déterminer le type de l’intervalle ; ils récupèrent la valeur du champ descripteur SQL_DESC_CONCISE_TYPE. Lorsque la structure est utilisée pour les données de paramètre, le pilote utilise la valeur spécifiée par l’application dans le champ SQL_DESC_CONCISE_TYPE de l’APD pour interpréter le contenu de SQL_INTERVAL_STRUCT, même si l’application définit la valeur du champ interval_type sur une valeur différente.
Cette structure est définie comme suit :
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;
Le champ interval_type du SQL_INTERVAL_STRUCT indique à l’application quelle structure est détenue dans l’union, ainsi que les membres de la structure qui sont pertinents. Le champ interval_sign a la valeur SQL_FALSE si le champ de début d’intervalle n’est pas signé ; s’il est SQL_TRUE, le champ de début est négatif. La valeur du champ de début lui-même n’est toujours pas signée, quelle que soit la valeur de interval_sign. Le champ interval_sign agit comme un bit de signe.
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour