Condividi tramite


Verifica della creazione di un set di risultati

Nella maggior parte delle situazioni, i programmatori sanno se le istruzioni eseguite dalla loro applicazione creeranno un insieme di risultati. Questo è il caso in cui l'applicazione utilizza istruzioni SQL codificate dal programmatore. Di solito accade quando l'applicazione costruisce le istruzioni SQL in fase di esecuzione: Il programmatore può facilmente includere del codice che segnala se si sta costruendo un'istruzione SELECT o INSERT. In alcune situazioni, il programmatore non può sapere se un'istruzione creerà un set di risultati. Ciò vale se l'applicazione consente all'utente di immettere ed eseguire un'istruzione SQL. Questo vale anche quando l'applicazione costruisce un'istruzione in fase di esecuzione per eseguire una procedura.

In questi casi, l'applicazione chiama SQLNumResultCols per determinare il numero di colonne nel set di risultati. Se si tratta di 0, l'istruzione non ha creato un set di risultati; se è un altro numero, l'istruzione ha creato un set di risultati.

L'applicazione può chiamare SQLNumResultCols in qualsiasi momento dopo la preparazione o l'esecuzione dell'istruzione. Tuttavia, poiché alcune origini dati non sono in grado di descrivere facilmente gli insiemi di risultati che verranno creati dalle istruzioni preparate, le prestazioni ne risentiranno se SQLNumResultCols viene richiamato dopo la preparazione di un'istruzione ma prima della sua esecuzione.

Alcune origini dati supportano anche la determinazione del numero di righe restituite da un'istruzione SQL in un set di risultati. A tale scopo, l'applicazione chiama SQLRowCount. L'esatto significato del conteggio delle righe è indicato dall'impostazione dell'opzione SQL_DYNAMIC_CURSOR_ATTRIBUTES2, SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES2, SQL_KEYSET_CURSOR_ATTRIBUTES2 o SQL_STATIC_CURSOR_ATTRIBUTES2 (a seconda del tipo di cursore) restituita da una chiamata a SQLGetInfo. Questa maschera di bit indica per ogni tipo di cursore se il conteggio delle righe restituito è esatto, approssimativo o se non è affatto disponibile. Se il conteggio delle righe per i cursori statici o guidati da keyset è influenzato dalle modifiche apportate tramite SQLBulkOperations o SQLSetPos, o da dichiarazioni di aggiornamento o cancellazione posizionate, dipende da altri bit restituiti dagli stessi argomenti dell'opzione elencati in precedenza. Per altre informazioni, vedere la descrizione della funzione SQLGetInfo.