Metadata - Parameter en resultaat

van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Dit onderwerp beschrijft wat wordt teruggegeven in de velden implementatieparameterdescriptor (IPD) en implementatierijdescriptor (IRD) voor datum- en tijdgegevenstypen.

Informatie teruggegeven in IPD-velden

De volgende informatie wordt teruggegeven in de IPD-velden:

Parametertype date time smalldatetime datetime datetime2 datetimeoffset
SQL_DESC_CASE_SENSITIVE SQL_FALSE SQL_FALSE SQL_FALSE SQL_FALSE SQL_FALSE SQL_FALSE
SQL_DESC_CONCISE_TYPE SQL_TYPE_DATE SQL_SS_TIME2 SQL_TYPE_TIMESTAMP SQL_TYPE_TIMESTAMP SQL_TYPE_TIMESTAMP SQL_SS_TIMESTAMPOFFSET
SQL_DESC_DATETIME_INTERVAL_CODE SQL_CODE_DATE 0 SQL_CODE_TIMESTAMP SQL_CODE_TIMESTAMP SQL_CODE_TIMESTAMP 0
SQL_DESC_DATETIME_INTERVAL_PRECISION 10 8,10..16 16 23 19, 21..27 26, 28..34
SQL_DESC_FIXED_PREC_SCALE SQL_FALSE SQL_FALSE SQL_FALSE SQL_FALSE SQL_FALSE SQL_FALSE
SQL_DESC_LENGTH 10 8,10..16 16 23 19, 21..27 26, 28..34
SQL_DESC_OCTET_LENGTH 6 12 4 8 16 20
SQL_DESC_PRECISION 0 0..7 0 3 0..7 0..7
SQL_DESC_SCALE 0 0..7 0 3 0..7 0..7
SQL_DESC_TYPE SQL_TYPE_DATE SQL_SS_TYPE_TIME2 SQL_DATETIME SQL_DATETIME SQL_DATETIME SQL_SS_TIMESTAMPOFFSET
SQL_DESC_TYPE_NAME date time smalldatetime in IRD, datetime2 in IPD datumtijd in IRD, datumtijd2 in IPD datetime2 datetimeoffset
SQL_CA_SS_VARIANT_TYPE SQL_C_TYPE_DATE SQL_C_TYPE_BINARY SQL_C_TYPE_TIMESTAMP SQL_C_TYPE_TIMESTAMP SQL_C_TYPE_TIMESTAMP SQL_C_TYPE_BINARY
SQL_CA_SS_VARIANT_SQL_TYPE SQL_TYPE_DATE SQL_SS_TIME2 SQL_TYPE_TIMESTAMP SQL_TYPE_TIMESTAMP SQL_TYPE_TIMESTAMP SQL_SS_TIMESTAMPOFFSET
SQL_CA_SS_SERVER_TYPE N/A N/A SQL_SS_TYPE_SMALLDATETIME SQL_SS_TYPE_DATETIME SQL_SS_TYPE_DEFAULT N/A

Soms zijn er discontinuïteiten in waardebereik. Bijvoorbeeld, 9 ontbreekt in 8,10..16. Dit komt door de toevoeging van een decimaalteken wanneer breuknauwkeurigheid groter is dan nul.

Datetime2 wordt teruggegeven als typenaam voor smalldatetime en datetime omdat de driver dit als een gemeenschappelijk type gebruikt om alle SQL_TYPE_TIMESTAMP waarden naar de server te verzenden.

SQL_CA_SS_VARIANT_SQL_TYPE is een nieuw beschrijvend veld. Dit veld werd toegevoegd aan de IRD en IPD om applicaties in staat te stellen het waardetype te specificeren dat gekoppeld is aan sqlvariant (SQL_SSVARIANT) kolommen en parameters

SQL_CA_SS_SERVER_TYPE is een nieuw IPD-only veld waarmee applicaties kunnen bepalen hoe waarden voor parameters die gebonden zijn wanneer SQL_TYPE_TYPETIMESTAMP (of als SQL_SS_VARIANT met een C-type SQL_C_TYPE_TIMESTAMP) naar de server worden gestuurd. Als SQL_DESC_CONCISE_TYPE SQL_TYPE_TIMESTAMP is (of SQL_SS_VARIANT is en het C-type SQL_C_TYPE_TIMESTAMP is) wanneer SQLExecute of SQLExecDirect wordt aangeroepen, bepaalt de waarde van SQL_CA_SS_SERVER_TYPE het tabulaire datastroom (TDS) type van de parameterwaarde, als volgt:

Waarde van SQL_CA_SS_SERVER_TYPE Geldige waarden voor SQL_DESC_PRECISION Geldige waarden voor SQL_DESC_LENGTH TDS-type
SQL_SS_TYPE_DEFAULT 0..7 19, 21..27 datetime2
SQL_SS_TYPE_SMALLDATETIME 0 19 smalldatetime
SQL_SS_TYPE_DATETIME 3 23 datetime

De standaardinstelling van SQL_CA_SS_SERVER_TYPE is SQL_SS_TYPE_DEFAULT. De instellingen van SQL_DESC_PRECISION en SQL_DESC_LENGTH worden gevalideerd met de instelling van SQL_CA_SS_SERVER_TYPE zoals beschreven in de bovenstaande tabel. Als deze validatie faalt, wordt SQL_ERROR teruggegeven en wordt een diagnostisch record gelogd met SQLState 07006 en het bericht "Restricted data type attribute violation". Deze fout wordt ook teruggegeven als SQL_CA_SS_SERVER_TYPE is ingesteld op een andere waarde dan SQL_SS_TYPE DEFAULT en DESC_CONCISE_TYPE niet SQL_TYPE_TIMESTAMP. Deze validaties worden uitgevoerd wanneer descriptor-consistentievalidatie plaatsvindt, bijvoorbeeld:

  • Wanneer SQL_DESC_DATA_PTR verandert.

  • Tijdens de voorbereiding of uitvoering (wanneer SQLExecute, SQLExecDirect, SQLSetPos of SQLBulkOperations wordt aangeroepen).

  • Wanneer een applicatie een niet-uitgestelde voorbereiding afdwingt door SQLPrepare aan te roepen met uitgestelde voorbereiding uitgeschakeld, of door SQLNumResultCols, SQLDescribeCol of SQLDescribeParam aan te roepen voor een instructie die voorbereid maar niet wordt uitgevoerd.

Wanneer SQL_CA_SS_SERVER_TYPE wordt ingesteld door een aanroep naar SQLSetDescField, moet de waarde SQL_SS_TYPE_DEFAULT, SQL_SS_TYPE_SMALLDATETIME of SQL_SS_TYPE_DATETIME zijn. Als dit niet het geval is, wordt SQL_ERROR geretourneerd en wordt een diagnostisch record gelogd met SQLState HY092 en het bericht "Invalid attribute/option identifier".

Het attribuut SQL_CA_SS_SERVER_TYPE kan worden gebruikt door applicaties die afhankelijk zijn van functionaliteit die wordt ondersteund door datetime en smalldatetime, maar niet datetime2. Bijvoorbeeld, datetime2 vereist het gebruik van de dateadd- en datediif-functies, terwijl datetime en smalldatetime ook rekenkundige operatoren toestaan. De meeste applicaties hoeven deze eigenschap niet te gebruiken en het gebruik ervan moet worden vermeden.

Informatie teruggegeven in IRD-velden

De volgende informatie wordt teruggegeven in de IRD-velden:

Kolomsoort date time smalldatetime datetime datetime2 datetimeoffset
SQL_DESC_AUTO_UNIQUE_VALUE SQL_FALSE SQL_FALSE SQL_FALSE SQL_FALSE SQL_FALSE SQL_FALSE
SQL_DESC_CASE_SENSITIVE SQL_FALSE SQL_FALSE SQL_FALSE SQL_FALSE SQL_FALSE SQL_FALSE
SQL_DESC_CONCISE_TYPE SQL_TYPE_DATE SQL_SS_TIME2 SQL_TYPE_TIMESTAMP SQL_TYPE_TIMESTAMP SQL_TYPE_TIMESTAMP SQL_SS_TIMESTAMPOFFSET
SQL_DESC_DATETIME_INTERVAL_CODE SQL_CODE_DATE 0 SQL_CODE_TIMESTAMP SQL_CODE_TIMESTAMP SQL_CODE_TIMESTAMP 0
SQL_DESC_DATETIME_INTERVAL_PRECISION 10 8,10..16 16 23 19, 21..27 26, 28..34
SQL_DESC_DISPLAY_SIZE 10 8,10..16 16 23 19, 21..27 26, 28..34
SQL_DESC_FIXED_PREC_SCALE SQL_FALSE SQL_FALSE SQL_FALSE SQL_FALSE SQL_FALSE SQL_FALSE
SQL_DESC_LENGTH 10 8,10..16 16 2 19, 21..27 26, 28..34
SQL_DESC_LITERAL_PREFIX ' ' ' ' ' '
SQL_DESC_LITERAL_SUFFIX ' ' ' ' ' '
SQL_DESC_LOCAL_TYPE_NAME date time smalldatetime datetime datetime2 datetimeoffset
SQL_DESC_OCTET_LENGTH 6 12 4 8 16 20
SQL_DESC_PRECISION 0 0..7 0 3 0..7 0..7
SQL_DESC_SCALE 0 0..7 0 3 0..7 0..7
SQL_DESC_SEARCHABLE SQL_PRED_SEARCHABLE SQL_PRED_SEARCHABLE SQL_PRED_SEARCHABLE SQL_PRED_SEARCHABLE SQL_PRED_SEARCHABLE SQL_PRED_SEARCHABLE
SQL_DESC_TYPE SQL_DATETIME SQL_SS_TIME2 SQL_DATETIME SQL_DATETIME SQL_DATETIME SQL_SS_TIMESTAMPOFFSET
SQL_DESC_TYPE_NAME date time smalldatetime datetime datetime2 datetimeoffset
SQL_DESC_UNSIGNED SQL_TRUE SQL_TRUE SQL_TRUE SQL_TRUE SQL_TRUE SQL_TRUE

Zie ook

Metadata (ODBC)