Prise en charge de sql_variant pour les types Date et Time
S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
Cette rubrique décrit comment le type de données sql_variant prend en charge les fonctionnalités de date et d’heure améliorées.
L'attribut de colonne SQL_CA_SS_VARIANT_TYPE est utilisé pour retourner le type C d'une colonne de résultat de variante. SQL Server 2008 (10.0.x) introduit un attribut supplémentaire, SQL_CA_SS_VARIANT_SQL_TYPE, qui définit le type SQL d’une colonne de résultat de variante dans le descripteur de ligne d’implémentation (IRD). SQL_CA_SS_VARIANT_SQL_TYPE pouvez également être utilisé dans le descripteur de paramètre d’implémentation (IPD) pour spécifier le type SQL d’un paramètre SQL_SS_TIME2 ou SQL_SS_TIMESTAMPOFFSET qui a SQL_C_BINARY type C lié avec le type SQL_SS_VARIANT.
Les nouveaux types SQL_SS_TIME2 et SQL_SS_TIMESTAMPOFFSET peuvent être définis par SQLColAttribute. SQL_CA_SS_VARIANT_SQL_TYPE pouvez être retourné par SQLGetDescField.
Pour les colonnes de résultats, le pilote effectue une conversion de la variante vers les types date/heure. Pour plus d’informations, consultez Conversions de SQL en C. Lors de la liaison à SQL_C_BINARY, la longueur de la mémoire tampon doit être suffisamment grande pour recevoir le struct qui correspond au type SQL.
Pour les paramètres SQL_SS_TIME2 et SQL_SS_TIMESTAMPOFFSET, le pilote convertit les valeurs C en valeurs sql_variant , comme décrit dans le tableau ci-dessous. Si un paramètre est lié en tant que SQL_C_BINARY et que le type de serveur est SQL_SS_VARIANT, il est traité comme une valeur binaire à moins que l'application n'ait défini SQL_CA_SS_VARIANT_SQL_TYPE sur un autre type SQL. Dans ce cas, SQL_CA_SS_VARIANT_SQL_TYPE est prioritaire ; autrement dit, si SQL_CA_SS_VARIANT_SQL_TYPE est défini, il substitue le comportement par défaut consistant à déduire le type SQL variant du type C.
Type C | Type de serveur | Commentaires |
---|---|---|
SQL_C_CHAR | varchar | SQL_CA_SS_VARIANT_SQL_TYPE est ignoré. |
SQL_C_WCHAR | nvarcar | SQL_CA_SS_VARIANT_SQL_TYPE est ignoré. |
SQL_C_TINYINT | smallint | SQL_CA_SS_VARIANT_SQL_TYPE est ignoré. |
SQL_C_STINYINT | smallint | SQL_CA_SS_VARIANT_SQL_TYPE est ignoré. |
SQL_C_SHORT | smallint | SQL_CA_SS_VARIANT_SQL_TYPE est ignoré. |
SQL_C_SSHORT | smallint | SQL_CA_SS_VARIANT_SQL_TYPE est ignoré. |
SQL_C_USHORT | int | SQL_CA_SS_VARIANT_SQL_TYPE est ignoré. |
SQL_C_LONG | int | SQL_CA_SS_VARIANT_SQL_TYPE est ignoré. |
SQL_C_SLONG | int | SQL_CA_SS_VARIANT_SQL_TYPE est ignoré. |
SQL_C_ULONG | bigint | SQL_CA_SS_VARIANT_SQL_TYPE est ignoré. |
SQL_C_SBIGINT | bigint | SQL_CA_SS_VARIANT_SQL_TYPE est ignoré. |
SQL_C_FLOAT | real | SQL_CA_SS_VARIANT_SQL_TYPE est ignoré. |
SQL_C_DOUBLE | virgule flottante | SQL_CA_SS_VARIANT_SQL_TYPE est ignoré. |
SQL_C_BIT | bit | SQL_CA_SS_VARIANT_SQL_TYPE est ignoré. |
SQL_C_UTINYINT | tinyint | SQL_CA_SS_VARIANT_SQL_TYPE est ignoré. |
SQL_C_BINARY | varbinary | SQL_CA_SS_VARIANT_SQL_TYPE n'est pas défini. |
SQL_C_BINARY | time | SQL_CA_SS_VARIANT_SQL_TYPE = SQL_SS_TIME2 La mise à l’échelle est définie sur SQL_DESC_PRECISION (paramètre DecimalDigits de SQLBindParameter). |
SQL_C_BINARY | datetimeoffset | SQL_CA_SS_VARIANT_SQL_TYPE = SQL_SS_TIMESTAMPOFFSET La mise à l’échelle est définie sur SQL_DESC_PRECISION (paramètre DecimalDigits de SQLBindParameter). |
SQL_C_TYPE_DATE | date | SQL_CA_SS_VARIANT_SQL_TYPE est ignoré. |
SQL_C_TYPE_TIME | time(0) | SQL_CA_SS_VARIANT_SQL_TYPE est ignoré. |
SQL_C_TYPE_TIMESTAMP | datetime2 | La mise à l’échelle est définie sur SQL_DESC_PRECISION (paramètre DecimalDigits de SQLBindParameter). |
SQL_C_NUMERIC | decimal | La précision est définie sur SQL_DESC_PRECISION (paramètre ColumnSize de SQLBindParameter). Groupe identique sur SQL_DESC_SCALE (paramètre DecimalDigits de SQLBindParameter). |
SQL_C_SS_TIME2 | time | SQL_CA_SS_VARIANT_SQL_TYPE est ignoré |
SQL_C_SS_TIMESTAMPOFFSET | datetimeoffset | SQL_CA_SS_VARIANT_SQL_TYPE est ignoré |
Voir aussi
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