Condividi tramite


SQLBindCol

Si applica a: SQL Server Database SQL di Azure Istanza gestita di SQL di Azure Azure Synapse Analytics Piattaforma di strumenti analitici (PDW)

Come regola generale, prendere in considerazione le implicazioni dell'uso di SQLBindCol per causare la conversione dei dati. Le conversioni per associazione sono processi client. Se ad esempio viene recuperato un valore a virgola mobile associato a una colonna di tipo character, nel driver viene eseguita in locale la conversione da float a character quando viene recuperata una riga. La funzione Transact-SQL CONVERT può essere usata per inserire il costo della conversione dei dati nel server.

Un'istanza di SQL Server può restituire più set di righe di risultati in un'esecuzione di una singola istruzione. Ogni set di risultati deve essere associato separatamente. Per altre informazioni sull'associazione per più set di risultati, vedere SQLMoreResults.

Lo sviluppatore può associare colonne a tipi di dati C specifici di SQL Server usando il valore TargetType SQL_C_BINARY. Le colonne associate a tipi specifici di SQL Server non sono portabili. I tipi di dati ODBC C specifici di SQL Server definiti corrispondono alle definizioni dei tipi per le applicazioni di conversione della libreria DB e delle librerie di database che possono sfruttare questa funzionalità.

Il troncamento dei dati per la creazione di report è un processo costoso per il driver ODBC di SQL Server Native Client. È possibile evitare il troncamento assicurandosi che la larghezza di tutti i buffer di dati associati sia sufficiente per restituire i dati. Per i dati di tipo character, la larghezza deve includere lo spazio per un carattere di terminazione della stringa quando viene utilizzato il comportamento predefinito del driver per la terminazione della stringa. Ad esempio, l'associazione di una colonna char(5) di SQL Server a una matrice di cinque caratteri comporta il troncamento per ogni valore recuperato. L'associazione della stessa colonna a una matrice di sei caratteri evita il troncamento fornendo un elemento character in cui archiviare il terminatore null. SQLGetData può essere usato per recuperare in modo efficiente dati di tipo long character e binari senza troncamento.

Per i tipi di dati di valore di grandi dimensioni, se il buffer fornito dall'utente non è sufficientemente grande da contenere l'intero valore della colonna, SQL_SUCCESS_WITH_INFO viene restituito e "dati stringa; viene generato l'avviso di troncamento a destra. L'argomento StrLen_or_IndPtr conterrà il numero di caratteri/byte archiviati nel buffer.

Supporto di SQLBindCol per le caratteristiche avanzate di data e ora

I valori delle colonne dei risultati dei tipi di data/ora vengono convertiti come descritto in Conversioni da SQL a C. Si noti che per recuperare le colonne time e datetimeoffset come strutture corrispondenti (SQL_SS_TIME2_STRUCT e SQL_SS_TIMESTAMPOFFSET_STRUCT), TargetType deve essere specificato come SQL_C_DEFAULT o SQL_C_BINARY.

Per altre informazioni, vedere Miglioramenti di data e ora (ODBC).

Supporto di SQLBindCol per tipi CLR definiti dall'utente di grandi dimensioni

SQLBindCol supporta tipi CLR definiti dall'utente di grandi dimensioni. Per altre informazioni, vedere Tipi CLR definiti dall'utente (ODBC) di grandi dimensioni.

Vedi anche

Funzione SQLBindCol
Dettagli di implementazione dell'API ODBC