Condividi tramite


SQLDescribeCol e SQLColAttribute

SQLDescribeCol e SQLColAttribute vengono usati per recuperare i metadati del set di risultati. La differenza tra queste due funzioni è che SQLDescribeCol restituisce sempre le stesse cinque informazioni (nome di una colonna, tipo di dati, precisione, scala e supporto dei valori Null), mentre SQLColAttribute restituisce una singola informazione richiesta dall'applicazione. Tuttavia, SQLColAttribute può restituire una selezione molto più completa di metadati, tra cui distinzione tra maiuscole e minuscole di una colonna, dimensioni di visualizzazione, aggiornabilità e ricercabilità.

Molte applicazioni, in particolare quelle che visualizzano solo i dati, richiedono solo i metadati restituiti da SQLDescribeCol. Per queste applicazioni, è più veloce usare SQLDescribeCol rispetto a SQLColAttribute, perché le informazioni vengono restituite in una singola chiamata. Altre applicazioni, in particolare quelle che aggiornano i dati, richiedono i metadati aggiuntivi restituiti da SQLColAttribute e quindi usano entrambe le funzioni. Inoltre, SQLColAttribute supporta metadati specifici del driver. Per altre informazioni, vedere Tipi di dati specifici del driver, tipi di descrittore, tipi di informazioni, tipi di diagnostica e attributi.

Un'applicazione può recuperare i metadati del set di risultati in qualsiasi momento dopo che un'istruzione è stata preparata o eseguita e prima che il cursore sul set di risultati venga chiuso. Pochissime applicazioni richiedono i metadati per il set di risultati dopo che l’istruzione è stata preparata e prima della sua esecuzione. Se possibile, le applicazioni devono attendere il recupero dei metadati fino all'esecuzione dell'istruzione, perché alcune origini dati non possono restituire metadati per istruzioni preparate ed emulare questa funzionalità nel driver è spesso un processo lento. Ad esempio, il driver potrebbe generare un set di risultati a zero righe sostituendo la clausola WHERE di un'istruzione SELECT con la clausola WHERE 1 = 2 ed eseguendo l'istruzione risultante.

Spesso il recupero dei metadati dall'origine dati è costoso. Per questo motivo, i driver devono memorizzare nella cache tutti i metadati recuperati dal server e tenerli per tutto il tempo in cui il cursore sul set di risultati è aperto. Inoltre, le applicazioni devono richiedere solo i metadati necessari.