Parametr i wynik metadanych
W tym temacie opisano, co jest zwracany w deskryptorze parametr wykonania (IPD) i pola deskryptora wiersza implementacji (IRD) dla daty i czas typów danych.
Informacje zwrócone w polach IPD
W polach IPD zwracany jest następujące informacje:
Typ parametru |
data |
godzina |
smalldatetime |
data_i_godzina |
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 |
smalldatetimew IRD datetime2 w IPD |
datetimew IRD datetime2 w 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 |
Brak |
Brak |
SQL_SS_TYPE_SMALLDATETIME |
SQL_SS_TYPE_DATETIME |
SQL_SS_TYPE_DEFAULT |
Brak |
Czasami demograficznymi w są zakresy wartości.Na przykład 9 brakuje w 8 10..16.Jest to spowodowane dodanie przecinka dziesiętnego po dokładność ułamkowa jest większa od zera.
datetime2zwracane jako typename dla smalldatetime i datetime , ponieważ sterownik używa go jako typu wspólnego dla wszystkich transmisji SQL_TYPE_TIMESTAMP wartości do serwera.
SQL_CA_SS_VARIANT_SQL_TYPE jest nowe pole deskryptora.To pole zostało dodane do włączania aplikacji określić typ wartości skojarzone z IRD i IPD sqlvariant (SQL_SSVARIANT), kolumn i parametry
SQL_CA_SS_SERVER_TYPE jest nowe pole tylko do IPD Aby włączyć aplikacje do kontrolowania sposobu wartości parametrów powiązane jako SQL_TYPE_TYPETIMESTAMP (lub SQL_SS_VARIANT C typu SQL_C_TYPE_TIMESTAMP) są wysyłane do serwera.Jeśli SQL_DESC_CONCISE_TYPE jest SQL_TYPE_TIMESTAMP (lub jest SQL_SS_VARIANT i SQL_C_TYPE_TIMESTAMP jest typu C) po SQLExecute lub nosi nazwęSQLExecDirect , wartość SQL_CA_SS_SERVER_TYPE określa typ (TDS) wartości parametru strumień danych tabelarycznych, w następujący sposób:
Wartość SQL_CA_SS_SERVER_TYPE |
Prawidłowe wartooci dla SQL_DESC_PRECISION |
Prawidłowe wartooci dla SQL_DESC_LENGTH |
Typ TDS |
---|---|---|---|
SQL_SS_TYPE_DEFAULT |
0..7 |
19, 21..27 |
datetime2 |
SQL_SS_TYPE_SMALLDATETIME |
0 |
19 |
smalldatetime |
SQL_SS_TYPE_DATETIME |
3 |
23 |
datetime |
Domyślne ustawienie SQL_CA_SS_SERVER_TYPE jest SQL_SS_TYPE_DEFAULT.Poprawność ustawień SQL_DESC_PRECISION i SQL_DESC_LENGTH z ustawieniem SQL_CA_SS_SERVER_TYPE opisane w powyższej tabela.Jeśli to uwierzytelnienie nie powiedzie się, zwracana jest wartość SQL_ERROR i diagnostycznych rekord rejestrowany jest SQLState 07006 i komunikat "ograniczonego typu danych atrybut".Ten błąd jest również zwracana, jeśli jest SQL_CA_SS_SERVER_TYPE zestaw na wartość inną niż domyślna SQL_SS_TYPE i DESC_CONCISE_TYPE nie jest SQL_TYPE_TIMESTAMP.Poprawności te są wykonywane podczas sprawdzania spójności deskryptora występuje na przykład:
Kiedy SQL_DESC_DATA_PTR zostanie zmieniona.
Na przygotowanie i wykonanie czas (po SQLExecute, SQLExecDirect, SQLSetPos lub SQLBulkOperations jest nazywana).
Gdy aplikacja wymusza nie odroczone przygotować poprzez wywołanie SQLPrepare z odroczonym przygotować wyłączone lub poprzez wywołanie SQLNumResultCols, SQLDescribeCol, lub SQLDescribeParam dla instrukcja, która jest przygotowana, ale nie jest wykonywany.
Gdy jest SQL_CA_SS_SERVER_TYPE zestaw przez wywołanie do SQLSetDescField, jej wartość musi być SQL_SS_TYPE_DEFAULT, SQL_SS_TYPE_SMALLDATETIME lub SQL_SS_TYPE_DATETIME.Jeśli nie jest przypadek, zwracana jest wartość SQL_ERROR i diagnostycznych rekord rejestrowany jest z SQLState HY092 i komunikat "nieprawidłowy atrybut/opcji Identyfikator".
Atrybut SQL_CA_SS_SERVER_TYPE może być używany przez aplikacje, które zależą od funkcji obsługiwanych przez datetime i smalldatetime, ale nie datetime2.Na przykład datetime2 wymaga korzystania z dateadd i datediif funkcje konieczne datetime i smalldatetime także umożliwić operatorów arytmetycznych.Większość aplikacji nie trzeba używać tego atrybut i jego zastosowania, należy unikać.
Informacje zwrócone w polach IRD
W polach IRD zwracany jest następujące informacje:
Typ kolumny |
data |
godzina |
smalldatetime |
data_i_godzina |
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 |