Funzione SQLSetDescRec
conformità
Versione introdotta: Conformità agli standard ODBC 3.0: ISO 92
riepilogo
La funzione SQLSetDescRec imposta più campi descrittori che influiscono sul tipo di dati e sul buffer associati a una colonna o a dati dei parametri.
Sintassi
SQLRETURN SQLSetDescRec(
SQLHDESC DescriptorHandle,
SQLSMALLINT RecNumber,
SQLSMALLINT Type,
SQLSMALLINT SubType,
SQLLEN Length,
SQLSMALLINT Precision,
SQLSMALLINT Scale,
SQLPOINTER DataPtr,
SQLLEN * StringLengthPtr,
SQLLEN * IndicatorPtr);
Argomenti
DescrittoreHandle
[Input] Handle del descrittore. Questo non deve essere un handle IRD.
RecNumber
[Input] Indica il record descrittore che contiene i campi da impostare. I record del descrittore sono numerati da 0, con il numero di record 0 come record del segnalibro. Questo argomento deve essere uguale o maggiore di 0. Se RecNumber è maggiore del valore di SQL_DESC_COUNT, SQL_DESC_COUNTis modificato nel valore di RecNumber.
tipo
[Input] Valore a cui impostare il campo SQL_DESC_TYPE per il record descrittore.
SubType
[Input] Per i record il cui tipo è SQL_DATETIME o SQL_INTERVAL, si tratta del valore a cui impostare il campo SQL_DESC_DATETIME_INTERVAL_CODE.
lunghezza
[Input] Valore a cui impostare il campo SQL_DESC_OCTET_LENGTH per il record descrittore.
precisione
[Input] Valore a cui impostare il campo SQL_DESC_PRECISION per il record descrittore.
Ridimensionare
[Input] Valore a cui impostare il campo SQL_DESC_SCALE per il record descrittore.
DataPtr
[Input o output posticipato] Valore a cui impostare il campo SQL_DESC_DATA_PTR per il record descrittore.
DataPtr può essere impostato su un puntatore Null.
L'argomento dataptr
stringLengthPtr
[Input o output posticipato] Valore a cui impostare il campo SQL_DESC_OCTET_LENGTH_PTR per il record del descrittore.
StringLengthPtr può essere impostato su un puntatore Null per impostare il campo SQL_DESC_OCTET_LENGTH_PTR su un puntatore Null.
indicatorPtr
[Input o output posticipato] Valore a cui impostare il campo SQL_DESC_INDICATOR_PTR per il record descrittore.
IndicatorPtr può essere impostato su un puntatore Null per impostare il campo SQL_DESC_INDICATOR_PTR su un puntatore Null.
Rendiconto
SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR o SQL_INVALID_HANDLE.
Diagnostica
Quando
SQLSTATE | Errore | Descrizione |
---|---|---|
01000 | Avviso generale | Messaggio informativo specifico del driver. (La funzione restituisce SQL_SUCCESS_WITH_INFO. |
07009 | Indice descrittore non valido | L'argomento RecNumber L'argomento RecNumber era minore di 0. L'argomento L'argomento |
08S01 | Errore del collegamento di comunicazione | Collegamento di comunicazione tra il driver e l'origine dati a cui è stato connesso il driver non è riuscito prima del completamento dell'elaborazione della funzione. |
HY000 | Errore generale | Si è verificato un errore per il quale non è stato specificato SQLSTATE e per il quale non è stato definito alcun SQLSTATE specifico dell'implementazione. Il messaggio di errore restituito da SQLGetDiagRec nel buffer *MessageText descrive l'errore e la relativa causa. |
HY001 | Errore di allocazione della memoria | Il driver non è riuscito ad allocare memoria necessaria per supportare l'esecuzione o il completamento della funzione. |
HY010 | Errore della sequenza di funzioni | (DM) Il (DM) (DM) È stata chiamata una funzione in esecuzione asincrona per l'handle di connessione associato al DescriptorHandle. Questa funzione asincrona era ancora in esecuzione quando è stata chiamata la funzione SQLSetDescRec (DM) |
HY013 | Errore di gestione della memoria | Impossibile elaborare la chiamata di funzione perché non è stato possibile accedere agli oggetti di memoria sottostanti, probabilmente a causa di condizioni di memoria insufficiente. |
HY016 | Impossibile modificare un descrittore di riga di implementazione | L'argomento DescriptorHandle |
HY021 | Informazioni sul descrittore incoerente | Il campo Tipo Le informazioni del descrittore controllate durante un controllo coerenza non sono coerenti. Vedere "Verifiche di coerenza" più avanti in questa sezione. |
HY090 | Lunghezza della stringa o del buffer non valida | (DM) Il driver era un driver ODBC 2.x, il descrittore era un ARD, l'argomento ColumnNumber era impostato su 0 e il valore specificato per l'argomento BufferLength non era uguale a 4. |
HY117 | La connessione viene sospesa a causa dello stato sconosciuto della transazione. Sono consentite solo funzioni disconnesse e di sola lettura. | (DM) Per altre informazioni sullo stato sospeso, vedere funzione SQLEndTran. |
HYT01 | Timeout connessione scaduto | Periodo di timeout della connessione scaduto prima che l'origine dati rispondesse alla richiesta. Il periodo di timeout della connessione viene impostato tramite SQLSetConnectAttr, SQL_ATTR_CONNECTION_TIMEOUT. |
IM001 | Il driver non supporta questa funzione | (DM) Il driver associato al DescrittoreHandle non supporta la funzione. |
Commenti
Un'applicazione può chiamare SQLSetDescRec per impostare i campi seguenti per una singola colonna o parametro:
SQL_DESC_TYPE
SQL_DESC_DATETIME_INTERVAL_CODE (per i record il cui tipo è SQL_DATETIME o SQL_INTERVAL)
SQL_DESC_OCTET_LENGTH
SQL_DESC_PRECISION
SQL_DESC_SCALE
SQL_DESC_DATA_PTR
SQL_DESC_OCTET_LENGTH_PTR
SQL_DESC_INDICATOR_PTR
Nota
Se una chiamata a
Quando si associa una colonna o un parametro, SQLSetDescRec consente di modificare più campi che influiscono sull'associazione senza chiamare SQLBindCol o SQLBindParameter o effettuare più chiamate a SQLSetDescField. SQLSetDescRec possibile impostare campi in un descrittore non attualmente associato a un'istruzione . Si noti che SQLBindParameter imposta più campi di SQLSetDescRec, può impostare campi sia in un APD che in un IPD in una sola chiamata e non richiede un handle descrittore.
Nota
L'attributo di istruzione SQL_ATTR_USE_BOOKMARKS deve essere sempre impostato prima di chiamare SQLSetDescRec con un RecNumber argomento pari a 0 per impostare i campi del segnalibro. Anche se questo non è obbligatorio, è fortemente consigliato.
Controlli di coerenza
Un controllo di coerenza viene eseguito automaticamente dal driver ogni volta che un'applicazione imposta il campo SQL_DESC_DATA_PTR di un APD, ARD o IPD. Se uno dei campi non è coerente con altri campi, SQLSetDescRec restituirà SQLSTATE HY021 (informazioni del descrittore incoerente).
Ogni volta che un'applicazione imposta il campo SQL_DESC_DATA_PTR di un oggetto APD, ARD o IPD, il driver verifica che il valore del campo SQL_DESC_TYPE e i valori applicabili a tale campo SQL_DESC_TYPE siano validi e coerenti. Questo controllo viene sempre eseguito quando viene chiamato SQLBindParameter o SQLBindCol o quando viene chiamato SQLSetDescRec per un APD, ARD o IPD. Questa verifica coerenza include i controlli seguenti sui campi del descrittore:
Il campo SQL_DESC_TYPE deve essere uno dei tipi ODBC C o SQL validi o un tipo SQL specifico del driver. Il campo SQL_DESC_CONCISE_TYPE deve essere uno dei tipi ODBC C o SQL validi oppure un tipo C o SQL specifico del driver, inclusi i tipi datetime e interval concisi.
Se il campo del record SQL_DESC_TYPE è SQL_DATETIME o SQL_INTERVAL, il campo SQL_DESC_DATETIME_INTERVAL_CODE deve essere uno dei codici datetime o interval validi. Vedere la descrizione del campo SQL_DESC_DATETIME_INTERVAL_CODE in SQLSetDescField.
Se il campo SQL_DESC_TYPE indica un tipo numerico, i campi SQL_DESC_PRECISION e SQL_DESC_SCALE vengono verificati come validi.
Se il campo SQL_DESC_CONCISE_TYPE è un tipo di dati time o timestamp, un tipo di intervallo con un componente secondi o uno dei tipi di dati intervallo con un componente time, il campo SQL_DESC_PRECISION viene verificato come una precisione di secondi valida.
Se il SQL_DESC_CONCISE_TYPE è un tipo di dati interval, il campo SQL_DESC_DATETIME_INTERVAL_PRECISION viene verificato che sia un valore di precisione iniziale intervallo valido.
Il campo SQL_DESC_DATA_PTR di un IPD non è in genere impostato; Tuttavia, un'applicazione può eseguire questa operazione per forzare una verifica coerenza dei campi IPD. Non è possibile eseguire un controllo di coerenza su un IRD. Il valore su cui il campo SQL_DESC_DATA_PTR dell'IPD non è effettivamente archiviato e non può essere recuperato da una chiamata a SQLGetDescField o SQLGetDescRec; l'impostazione viene eseguita solo per forzare la verifica coerenza.
Funzioni correlate
Per informazioni su | Vedere |
---|---|
Associazione di una colonna | funzione SQLBindCol |
Associazione di un parametro | funzione SQLBindParameter |
Recupero di un singolo campo descrittore | funzione SQLGetDescField |
Recupero di più campi descrittore | funzione SQLGetDescRec |
Impostazione di campi di descrittore singolo | funzione SQLSetDescField |
Vedere anche
di riferimento all'API ODBC
file di intestazione ODBC