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 : pendant toute l’année 2024, nous allons éliminer progressivement Problèmes GitHub comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, voir :Soumettre et afficher des commentaires pour