Suporte a Sql_variant para tipos de data e hora
Aplica-se a: SQL Server
Banco de Dados
SQL do Azure Instância Gerenciada de SQL
do Azure PDW (Sistema de Plataforma de Análise) do Azure Synapse Analytics
Este tópico descreve como o tipo de dados sql_variant dá suporte à funcionalidade aprimorada de data e hora.
O atributo de coluna SQL_CA_SS_VARIANT_TYPE é usado para retornar o tipo C de uma coluna de resultado variável. O SQL Server 2008 (10.0.x)SQL Server 2008 (10.0.x)SQL Server 2008 (10.0.x)SQL_CA_SS_VARIANT_SQL_TYPE que define o tipo SQL de uma coluna de resultado de variante no IRD (descritor de linha de implementação). SQL_CA_SS_VARIANT_SQL_TYPE também pode ser usado no IPD (descritor de parâmetro de implementação) para especificar o tipo SQL de um parâmetro SQL_SS_TIME2 ou SQL_SS_TIMESTAMPOFFSET que tem SQL_C_BINARY tipo C associado ao tipo SQL_SS_VARIANT.
Os novos tipos SQL_SS_TIME2 e SQL_SS_TIMESTAMPOFFSET podem ser definidos por SQLColAttribute. SQL_CA_SS_VARIANT_SQL_TYPE pode ser retornado por SQLGetDescField.
Em colunas de resultado, o driver será convertido da variante em tipos de data/hora. Para obter mais informações, consulte Conversões de SQL para C. Ao associar a SQL_C_BINARY, o comprimento do buffer deve ser grande o suficiente para receber o struct que corresponde ao tipo SQL.
Para os parâmetros SQL_SS_TIME2 e SQL_SS_TIMESTAMPOFFSET, o driver converterá valores C em valores sql_variant , conforme descrito na tabela abaixo. Se um parâmetro for associado como SQL_C_BINARY e o tipo de servidor for SQL_SS_VARIANT, ele será tratado como um valor binário, a menos que o aplicativo tenha definido SQL_CA_SS_VARIANT_SQL_TYPE como outro tipo SQL. Nesse caso, SQL_CA_SS_VARIANT_SQL_TYPE tem precedência; ou seja, caso SQL_CA_SS_VARIANT_SQL_TYPE seja definido, ele substitui o comportamento padrão de dedução do tipo SQL variável do tipo C.
Tipo de C | Tipo de servidor | Comentários |
---|---|---|
SQL_C_CHAR | varchar | SQL_CA_SS_VARIANT_SQL_TYPE é ignorado. |
SQL_C_WCHAR | nvarcar | SQL_CA_SS_VARIANT_SQL_TYPE é ignorado. |
SQL_C_TINYINT | smallint | SQL_CA_SS_VARIANT_SQL_TYPE é ignorado. |
SQL_C_STINYINT | smallint | SQL_CA_SS_VARIANT_SQL_TYPE é ignorado. |
SQL_C_SHORT | smallint | SQL_CA_SS_VARIANT_SQL_TYPE é ignorado. |
SQL_C_SSHORT | smallint | SQL_CA_SS_VARIANT_SQL_TYPE é ignorado. |
SQL_C_USHORT | int | SQL_CA_SS_VARIANT_SQL_TYPE é ignorado. |
SQL_C_LONG | int | SQL_CA_SS_VARIANT_SQL_TYPE é ignorado. |
SQL_C_SLONG | int | SQL_CA_SS_VARIANT_SQL_TYPE é ignorado. |
SQL_C_ULONG | BIGINT | SQL_CA_SS_VARIANT_SQL_TYPE é ignorado. |
SQL_C_SBIGINT | BIGINT | SQL_CA_SS_VARIANT_SQL_TYPE é ignorado. |
SQL_C_FLOAT | real | SQL_CA_SS_VARIANT_SQL_TYPE é ignorado. |
SQL_C_DOUBLE | float | SQL_CA_SS_VARIANT_SQL_TYPE é ignorado. |
SQL_C_BIT | bit | SQL_CA_SS_VARIANT_SQL_TYPE é ignorado. |
SQL_C_UTINYINT | tinyint | SQL_CA_SS_VARIANT_SQL_TYPE é ignorado. |
SQL_C_BINARY | varbinary | SQL_CA_SS_VARIANT_SQL_TYPE não é definido. |
SQL_C_BINARY | time | SQL_CA_SS_VARIANT_SQL_TYPE = SQL_SS_TIME2 Scale é definido como SQL_DESC_PRECISION (o parâmetro DecimalDigits de SQLBindParameter). |
SQL_C_BINARY | datetimeoffset | SQL_CA_SS_VARIANT_SQL_TYPE = SQL_SS_TIMESTAMPOFFSET Scale é definido como SQL_DESC_PRECISION (o parâmetro DecimalDigits de SQLBindParameter). |
SQL_C_TYPE_DATE | date | SQL_CA_SS_VARIANT_SQL_TYPE é ignorado. |
SQL_C_TYPE_TIME | time(0) | SQL_CA_SS_VARIANT_SQL_TYPE é ignorado. |
SQL_C_TYPE_TIMESTAMP | datetime2 | Scale é definido como SQL_DESC_PRECISION (o parâmetro DecimalDigits de SQLBindParameter). |
SQL_C_NUMERIC | decimal | A precisão é definida como SQL_DESC_PRECISION (o parâmetro ColumnSize de SQLBindParameter). Conjunto de dimensionamento como SQL_DESC_SCALE (o parâmetro DecimalDigits de SQLBindParameter). |
SQL_C_SS_TIME2 | time | SQL_CA_SS_VARIANT_SQL_TYPE é ignorado |
SQL_C_SS_TIMESTAMPOFFSET | datetimeoffset | SQL_CA_SS_VARIANT_SQL_TYPE é ignorado |
Confira também
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de