Condividi tramite


Recupero di informazioni sul tipo di dati con SQLGetTypeInfo

Poiché i mapping dai tipi di dati SQL sottostanti agli identificatori di tipo ODBC sono approssimativi, ODBC fornisce una funzione (SQLGetTypeInfo) tramite cui un driver può descrivere completamente ogni tipo di dati SQL nell'origine dati. Questa funzione restituisce un set di risultati, nel quale ogni riga descrive le caratteristiche di un solo tipo di dati, ad esempio nome, identificatore di tipo, precisione, scala e supporto dei valori Null.

Queste informazioni vengono in genere usate da applicazioni generiche che consentono all'utente di creare e modificare le tabelle. Tali applicazioni chiamano SQLGetTypeInfo per recuperare le informazioni sul tipo di dati e quindi presentarle in parte o per intero all'utente. Queste applicazioni devono tenere conto di due aspetti:

  • È possibile eseguire il mapping di più tipi di dati SQL a un singolo identificatore di tipo, il che può rendere difficile determinare il tipo di dati da usare. Per risolvere questo problema, il set di risultati viene ordinato per primo per identificatore di tipo e, per secondo, per prossimità alla definizione dell'identificatore di tipo. Inoltre, i tipi di dati definiti dall'origine dati hanno la precedenza sui tipi di dati definiti dall'utente. Si supponga, ad esempio, che un'origine dati definisca i tipi di dati INTEGER e COUNTER come uguali, ad eccezione del fatto che COUNTER incrementa automaticamente. Si supponga anche che il tipo definito dall'utente WHOLENUM sia un sinonimo di INTEGER. Ognuno di questi tipi viene mappato a SQL_INTEGER. Nel set di risultati SQLGetTypeInfo, INTEGER viene visualizzato per primo, seguito da WHOLENUM e quindi da COUNTER. WHOLENUM viene visualizzato dopo INTEGER perché è definito dall'utente, ma prima di COUNTER perché corrisponde più precisamente alla definizione dell'identificatore di tipo SQL_INTEGER.

  • ODBC non definisce i nomi dei tipi di dati da utilizzare nelle istruzioni CREATE TABLE e ALTER TABLE. L'applicazione deve invece usare il nome restituito nella colonna TYPE_NAME del set di risultati restituito da SQLGetTypeInfo. Il motivo è che, anche se la maggior parte di SQL non cambia molto tra DBMS diversi, i nomi dei tipi di dati variano ampiamente. Invece di forzare i driver ad analizzare le istruzioni SQL e sostituire i nomi dei tipi di dati standard con nomi di tipi di dati specifici di DBMS, ODBC richiede alle applicazioni di usare innanzitutto i nomi specifici di DBMS.

Si noti che SQLGetTypeInfo non descrive necessariamente tutti i tipi di dati che un'applicazione può incontrare. In particolare, i set di risultati potrebbero contenere tipi di dati non supportati direttamente dall'origine dati. Ad esempio, i tipi di dati delle colonne nei set di risultati restituiti dalle funzioni catalogo sono definiti da ODBC e questi tipi di dati potrebbero non essere supportati dall'origine dati. Per determinare le caratteristiche dei tipi di dati in un set di risultati, un'applicazione chiama SQLColAttribute.