Funzione SQLCloseCursor

Conformità
Versione introdotta: Conformità agli standard ODBC 3.0: ISO 92

Sommario
SQLCloseCursor chiude un cursore che è stato aperto su un'istruzione e scarta i risultati in sospeso.

Sintassi

  
SQLRETURN SQLCloseCursor(  
     SQLHSTMT     StatementHandle);  

Arguments

StatementHandle
[Input] Handle di istruzione.

Returns

SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR o SQL_INVALID_HANDLE.

Diagnostica

Quando SQLCloseCursor restituisce SQL_ERROR o SQL_SUCCESS_WITH_INFO, un valore SQLSTATE associato può essere ottenuto chiamando SQLGetDiagRec con un HandleType di SQL_HANDLE_STMT e un Handle di StatementHandle. La tabella seguente elenca i valori SQLSTATE comunemente restituiti da SQLCloseCursor e li spiega nel contesto di questa funzione; la notazione "(DM)" precede le descrizioni degli stati SQL restituite dal Driver Manager. Il codice restituito associato a ogni valore SQLSTATE è SQL_ERROR, a meno che non sia specificato diversamente.

SQLSTATE Error Description
01000 Avviso generale Messaggio informativo specifico del driver. (La funzione restituisce SQL_SUCCESS_WITH_INFO.
24000 Stato del cursore non valido Nessun cursore era aperto sul HandleStatement. (Questo viene restituito solo da un ODBC 3. x driver.)
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) Una funzione in esecuzione asincrona veniva chiamata per il handle di connessione associato al StatementHandle ed era ancora in esecuzione quando questa funzione veniva chiamata.

(DM) È stata chiamata una funzione in esecuzione asincrona per StatementHandle ed era ancora in esecuzione quando questa funzione è stata chiamata.

(DM) SQLExecute, SQLExecDirect, SQLBulkOperations o SQLSetPos è stato chiamato per StatementHandle e restituito SQL_NEED_DATA. Questa funzione è stata chiamata prima dell'invio dei dati per tutti i parametri o le colonne data-at-execution.
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.
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 Il timeout della 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 a StatementHandle non supporta la funzione.

Comments

SQLCloseCursor restituisce SQLSTATE 24000 (Stato del cursore invalido) se nessun cursore è aperto. Chiamare SQLCloseCursor è equivalente a chiamare SQLFreeStmt con l'opzione SQL_CLOSE, con l'eccezione che SQLFreeStmt con SQL_CLOSE non ha effetto sull'applicazione se non è aperto un cursore sull'istruzione, mentre SQLCloseCursor restituisce SQLSTATE 24000 (stato del cursore invalido).

Note

Se è un ODBC 3. x applicazioni che funzionano con un ODBC 2. x chiama SQLCloseCursor quando non è aperto alcun cursore, SQLSTATE 24000 (Stato del cursore non valido) non viene restituito, perché il Driver Manager mappa SQLCloseCursor a SQLFreeStmt con SQL_CLOSE.

Per maggiori informazioni, vedi Chiusura del Cursore.

Esempio di codice

Vedi la funzione SQLBrowseConnect e la funzione SQLConnect.

Per informazioni su Vedi
Annullamento dell'elaborazione delle istruzioni Funzione SQLCancel
Liberare una maniglia Funzione SQLFreeHandle
Elaborazione di più set di risultati Funzione SQLMoreResults