Metadati - Parametro e set di righe
Si applica a: SQL Server Database SQL di Azure Istanza gestita di SQL di Azure Azure Synapse Analytics Piattaforma di strumenti analitici (PDW)
Questo articolo contiene informazioni sul tipo e sui membri di tipo seguenti, in relazione ai miglioramenti apportati alle funzionalità di data e ora OLE DB.
Struttura DBBINDING
ICommandWithParameters::GetParameterInfo
ICommandWithParameters::SetParameterInfo
IColumnsRowset::GetColumnsRowset
IColumnsInfo::GetColumnInfo
ICommandWithParameters::GetParameterInfo
Le informazioni seguenti vengono restituite nella struttura DBPARAMINFO attraverso prgParamInfo:
Tipo di parametro | wType | ulParamSize | bPrecision | bScale | dwFlags DBPARAMFLAGS_SS_ISVARIABLESCALE |
---|---|---|---|---|---|
data | DBTYPE_DBDATE | 6 | 10 | 0 | Clear |
Ora | DBTYPE_DBTIME2 | 10 | 8, 10..16 | 0..7 | Set |
smalldatetime | DBTYPE_DBTIMESTAMP | 16 | 16 | 0 | Clear |
datetime | DBTYPE_DBTIMESTAMP | 16 | 23 | 3 | Clear |
datetime2 | DBTYPE_DBTIMESTAMP | 16 | 19, 21..27 | 0..7 | Set |
datetimeoffset | DBTYPE_DBTIMESTAMPOFFSET | 20 | 26, 28..34 | 0..7 | Set |
Tenere presente che in alcuni casi gli intervalli di valori non sono continui Ciò è dovuto all'aggiunta di un separatore decimale quando la precisione frazionaria è maggiore di zero.
DBPARAMFLAGS_SS_ISVARIABLESCALE è valido solo quando si è connessi a un server che esegue SQL Server 2008 (10.0.x) e versioni successive. DBPARAMFLAGS_SS_ISVARIABLESCALE non viene mai impostato quando si è connessi a server legacy.
ICommandWithParameters::SetParameterInfo e tipi di parametri impliciti
Le informazioni specificate nella struttura DBPARAMBINDINFO devono essere conformi agli elementi seguenti:
pwszDataSourceType (specifico del provider) |
pwszDataSourceType (generico di OLE DB) |
ulParamSize | bScale |
---|---|---|---|
DBTYPE_DATE | 6 | Ignorato | |
data | DBTYPE_DBDATE | 6 | Ignorato |
DBTYPE_DBTIME | 10 | Ignorato | |
Ora | DBTYPE_DBTIME2 | 10 | 0..7 |
smalldatetime | 16 | Ignorato | |
datetime | 16 | Ignorato | |
datetime2 o DBTYPE_DBTIMESTAMP | DBTYPE_DBTIMESTAMP | 16 | 0..7 |
datetimeoffset | DBTYPE_DBTIMESTAMPOFFSET | 20 | 0..7 |
Il parametro bPrecision viene ignorato.
"DBPARAMFLAGS_SS_ISVARIABLESCALE" viene ignorato in caso di invio di dati al server. Le applicazioni possono forzare l'uso di tipi di flusso TDS (Tabular-Data Stream) legacy usando i nomi di tipo specifici del provider "datetime" e "smalldatetime". Quando si è connessi ai server che eseguono SQL Server 2008 (10.0.x) e versioni successive, verrà usato il formato "datetime2" e verrà eseguita una conversione implicita del server, se necessario, quando il nome del tipo è "datetime2" o "DBTYPE_DBTIMESTAMP". bScale viene ignorato se vengono usati i nomi dei tipi specifici del provider "datetime" o "smalldatetime". In caso contrario, è necessario verificare che bScale sia impostato correttamente nelle applicazioni. Nelle applicazioni aggiornate da MDAC e in OLE DB Driver per SQL Server aggiornato da SQL Server 2005 (9.x) che usano "DBTYPE_DBTIMESTAMP" si verificherà un errore se bScale non viene impostato correttamente. Quando si è connessi a istanze del server precedenti a SQL Server 2008 (10.0.x), un valore bScale diverso da 0 o 3 con "DBTYPE_DBTIMESTAMP" è un errore e verrà restituito E_FAIL.
Quando ICommandWithParameters::SetParameterInfo non viene chiamato, il provider implica il tipo di server dal tipo di associazione come specificato in IAccessor::CreateAccessor come indicato di seguito:
Tipo di associazione | pwszDataSourceType (specifico del provider) |
---|---|
DBTYPE_DATE | datetime2(0) |
DBTYPE_DBDATE | data |
DBTYPE_DBTIME | time(0) |
DBTYPE_DBTIME2 | time(7) |
DBTYPE_DBTIMESTAMP | datetime2(7) |
DBTYPE_DBTIMESTAMPOFFSET | datetimeoffset(7) |
IColumnsRowset::GetColumnsRowset
IColumnsRowset::GetColumnsRowset restituisce le colonne seguenti:
Tipo colonna | DBCOLUMN_TYPE | DBCOLUM_COLUMNSIZE | DBCOLUMN_PRECISION | DBCOLUMN_SCALE, DBCOLUMN_DATETIMEPRECISION | DBCOLUMN_FLAGS, DBCOLUMNFLAGS_SS_ISVARIABLESCALE |
---|---|---|---|---|---|
data | DBTYPE_DBDATE | 6 | 10 | 0 | Clear |
Ora | DBTYPE_DBTIME2 | 10 | 8, 10..16 | 0..7 | Set |
smalldatetime | DBTYPE_DBTIMESTAMP | 16 | 16 | 0 | Clear |
datetime | DBTYPE_DBTIMESTAMP | 16 | 23 | 3 | Clear |
datetime2 | DBTYPE_DBTIMESTAMP | 16 | 19, 21..27 | 0..7 | Set |
datetimeoffset | DBTYPE_DBTIMESTAMPOFFSET | 20 | 26, 28..34 | 0..7 | Set |
In DBCOLUMN_FLAGS il valore di DBCOLUMNFLAGS_ISFIXEDLENGTH è sempre true per i tipi date/time e il valore dei flag seguenti è sempre false:
DBCOLUMNFLAGS_CACHEDEFERRED
DBCOLUMNFLAGS_ISBOOKMARK
DBCOLUMNFLAGS_ISCHAPTER
DBCOLUMNFLAGS_ISLONG
DBCOLUMNFLAGS_ISROWID
DBCOLUMNFLAGS_ISROWVER
DBCOLUMNFLAGS_MAYDEFER
I flag restanti (DBCOLUMNFLAGS_ISNULLABLE, DBCOLUMNFLAGS_MAYBENULL, DBCOLUMNFLAGS_WRITE e DBCOLUMNFLAGS_WRITEUNKNOWN) possono essere impostati in base alla modalità di definizione della colonna e alla query effettiva.
In DBCOLUMN_FLAGS è disponibile un nuovo flag DBCOLUMNFLAGS_SS_ISVARIABLESCALE che consente di determinare il tipo di server delle colonne nelle applicazioni, dove DBCOLUMN_TYPE è DBTYPE_DBTIMESTAMP. Per identificare il tipo di server è necessario utilizzare anche DBCOLUMN_SCALE o DBCOLUMN_DATETIMEPRECISION.
DBCOLUMNFLAGS_SS_ISVARIABLESCALE è valido solo quando si è connessi a un server che esegue SQL Server 2008 (10.0.x) e versioni successive. DBCOLUMNFLAGS_SS_ISVARIABLESCALE non è definito quando si è connessi a server legacy.
IColumnsInfo::GetColumnInfo
La struttura DBCOLUMNINFO restituisce le informazioni seguenti:
Tipo di parametro | wType | ulColumnSize | bPrecision | bScale | dwFlags DBPARAMFLAGS_SS_ISVARIABLESCALE |
---|---|---|---|---|---|
data | DBTYPE_DBDATE | 6 | 10 | 0 | Clear |
time(1..7) | DBTYPE_DBTIME2 | 10 | 8, 10..16 | 0..7 | Set |
smalldatetime | DBTYPE_DBTIMESTAMP | 16 | 16 | 0 | Clear |
datetime | DBTYPE_DBTIMESTAMP | 16 | 23 | 3 | Clear |
datetime2 | DBTYPE_DBTIMESTAMP | 16 | 19, 21..27 | 0..7 | Set |
datetimeoffset | DBTYPE_DBTIMESTAMPOFFSET | 20 | 26, 28..34 | 0..7 | Set |
In dwFlags il valore di DBCOLUMNFLAGS_ISFIXEDLENGTH è sempre true per i tipi date/time e il valore dei flag seguenti è sempre false:
DBCOLUMNFLAGS_CACHEDEFERRED
DBCOLUMNFLAGS_ISBOOKMARK
DBCOLUMNFLAGS_ISCHAPTER
DBCOLUMNFLAGS_ISLONG
DBCOLUMNFLAGS_ISROWID
DBCOLUMNFLAGS_ISROWVER, MAYDEFER
I flag restanti (DBCOLUMNFLAGS_ISNULLABLE, DBCOLUMNFLAGS_MAYBENULL, DBCOLUMNFLAGS_WRITE e DBCOLUMNFLAGS_WRITEUNKNOWN) possono essere impostati.
In dwFlags viene specificato un nuovo flag DBCOLUMNFLAGS_SS_ISVARIABLESCALE per consentire a un'applicazione di determinare il tipo di server delle colonne in cui wType è DBTYPE_DBTIMESTAMP. Per identificare il tipo di server usare anche bScale.
Vedi anche
Supporto dei tipi di dati per i miglioramenti relativi a data e ora OLE DB