Delen via


Statementhandvatten

Een instructie kan het gemakkelijkst worden beschouwd als een SQL-instructie, zoals SELECT * FROM Employee. Een instructie is echter meer dan alleen een SQL-instructie: deze bestaat uit alle informatie die is gekoppeld aan die SQL-instructie, zoals resultatensets die zijn gemaakt door de instructie en parameters die worden gebruikt bij de uitvoering van de instructie. Een instructie hoeft niet eens een door de toepassing gedefinieerde SQL-instructie te hebben. Wanneer een catalogusfunctie zoals SQLTables bijvoorbeeld wordt uitgevoerd op een instructie, wordt er een vooraf gedefinieerde SQL-instructie uitgevoerd die een lijst met tabelnamen retourneert.

Elke verklaring wordt geïdentificeerd door een verklaringverwijzer. Een instructie is gekoppeld aan één verbinding en er kunnen meerdere instructies voor die verbinding zijn. Sommige stuurprogramma's beperken het aantal actieve instructies dat ze ondersteunen; de SQL_MAX_CONCURRENT_ACTIVITIES optie in SQLGetInfo geeft aan hoeveel actieve instructies een stuurprogramma ondersteunt op één verbinding. Een instructie wordt gedefinieerd om actief te zijn als er resultaten in behandeling zijn, waarbij de resultaten een resultatenset zijn of het aantal rijen dat wordt beïnvloed door een INSERT-, UPDATE- of DELETE-instructie , of gegevens worden verzonden met meerdere aanroepen naar SQLPutData.

Binnen een stukje code waarmee ODBC (Driver Manager of een stuurprogramma) wordt geïmplementeerd, identificeert de instructiegreep een structuur die instructiegegevens bevat, zoals:

  • De status van de verklaring

  • De huidige diagnostische gegevens op stellingniveau

  • De adressen van de toepassingsvariabelen die zijn gebonden aan de parameters van de instructie en de kolommen van de resultatenset

  • De huidige instellingen van elk instructiekenmerk

Statementhandles worden gebruikt in de meeste ODBC-functies. Ze worden met name gebruikt in de functies voor het binden van parameters en kolommen voor resultatensets (SQLBindParameter en SQLBindCol), het voorbereiden en uitvoeren van instructies (SQLPrepare, SQLExecute en SQLExecDirect), het ophalen van metagegevens (SQLColAttribute en SQLDescribeCol), het ophalen van resultaten (SQLFetch) en het ophalen van diagnostische gegevens (SQLGetDiagField en SQLGetDiagRec). Ze worden ook gebruikt in catalogusfuncties (SQLColumns, SQLTables, enzovoort) en een aantal andere functies.

Statement-handle worden toegekend met SQLAllocHandle en vrijgegeven met SQLFreeHandle.