Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Conformiteit
Versie geïntroduceerd: ODBC 3.0 Standaardnaleving: ISO 92
Samenvatting
SQLSetStmtAttr stelt attributen in die gerelateerd zijn aan een instructie.
Note
Voor meer informatie over wat de Driver Manager deze functie toewijst wanneer een ODBC 3.x-applicatie werkt met een ODBC 2.x-driver , zie Mapping Replacement Functions for Backward Compatibility of Applications.
Syntax
SQLRETURN SQLSetStmtAttr(
SQLHSTMT StatementHandle,
SQLINTEGER Attribute,
SQLPOINTER ValuePtr,
SQLINTEGER StringLength);
Arguments
StatementHandle
[Invoer] Instructiehandgreep.
Attribuut
[Invoer] Optie om in te stellen, vermeld in "Reacties."
ValuePtr
[Invoer] Waarde wordt gekoppeld aan Attribuut. Afhankelijk van de waarde van Attribuut zal ValuePtr een van de volgende zijn:
Een ODBC-descriptor-handvat.
Een SQLUINTEGER-waarde.
Een SQLULEN-waarde.
Een verwijzing naar een van de volgende:
Een null-terminated tekenreeks.
Een binaire buffer.
Een waarde of array van het type SQLLEN, SQLULEN of SQLUSMALLINT.
Een door de bestuurder gedefinieerde waarde.
Als het Attribuut-argument een driver-specifieke waarde is, kan ValuePtr een getekend geheel getal zijn.
StringLength
[Invoer] Als Attribuut een ODBC-gedefinieerd attribuut is en ValuePtr wijst naar een tekenstring of een binaire buffer, zou dit argument de lengte van *ValuePtr moeten zijn. Als Attribuut een ODBC-gedefinieerd attribuut is en ValuePtr een geheel getal, wordt StringLength genegeerd.
Als Attribuut een door een driver gedefinieerd attribuut is, geeft de applicatie de aard van het attribuut aan bij de Driver Manager door het StringLength-argument in te stellen. StringLength kan de volgende waarden hebben:
Als ValuePtr een pointer is naar een tekenstring, dan is StringLength de lengte van de string of SQL_NTS.
Als ValuePtr een pointer is naar een binaire buffer, plaatst de applicatie het resultaat van de macro SQL_LEN_BINARY_ATTR(length) in StringLength. Dit plaatst een negatieve waarde in StringLength.
Als ValuePtr een pointer is naar een waarde die anders is dan een tekenstring of een binaire string, dan zou StringLength de waarde SQL_IS_POINTER moeten hebben.
Als ValuePtr een waarde met vaste lengte bevat, dan is StringLength ofwel SQL_IS_INTEGER of SQL_IS_UINTEGER, afhankelijk van toepassing.
Returns
SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR of SQL_INVALID_HANDLE.
Diagnostics
Wanneer SQLSetStmtAttr SQL_ERROR of SQL_SUCCESS_WITH_INFO teruggeeft, kan een bijbehorende SQLSTATE-waarde worden verkregen door SQLGetDiagRec aan te roepen met een HandleType van SQL_HANDLE_STMT en een Handle van StatementHandle. De volgende tabel geeft een overzicht van de SQLSTATE-waarden die vaak door SQLSetStmtAttr worden geretourneerd en legt elk uit in de context van deze functie; de notatie "(DM)" gaat vooraf aan de beschrijvingen van SQLSTATES die door de Driver Manager worden teruggegeven. De retourcode die is gekoppeld aan elke SQLSTATE-waarde is SQL_ERROR, tenzij anders vermeld.
| SQLSTATE | Fout | Description |
|---|---|---|
| 01000 | Algemene waarschuwing | Stuurprogrammaspecifiek informatiebericht. (Functie retourneert SQL_SUCCESS_WITH_INFO.) |
| 01S02 | Optiewaarde gewijzigd | De driver ondersteunde de in ValuePtr gespecificeerde waarde niet, of de waarde die in ValuePtr werd gespecificeerd was ongeldig vanwege de implementatieomstandigheden, dus de driver gebruikte een vergelijkbare waarde. (SQLGetStmtAttr kan worden aangeroepen om de tijdelijk gesubstitueerde waarde te bepalen.) De substitutewaarde is geldig voor de StatementHandle totdat de cursor gesloten is, waarna het statement-attribuut terugkeert naar de vorige waarde. De instructiekenmerken die kunnen worden gewijzigd, zijn: SQL_ATTR_CONCURRENCY SQL_ATTR_CURSOR_TYPE SQL_ATTR_KEYSET_SIZE SQL_ATTR_MAX_LENGTH SQL_ATTR_MAX_ROWS SQL_ATTR_QUERY_TIMEOUT SQL_ATTR_ROW_ARRAY_SIZE SQL_ATTR_SIMULATE_CURSOR (Functie retourneert SQL_SUCCESS_WITH_INFO.) |
| 08S01 | Communicatiekoppelingsfout | De communicatiekoppeling tussen het stuurprogramma en de gegevensbron waarmee het stuurprogramma is verbonden, is mislukt voordat de verwerking van de functie is voltooid. |
| 24000 | Ongeldige cursorstatus | Het Attribuut was SQL_ATTR_CONCURRENCY, SQL_ATTR_CURSOR_TYPE, SQL_ATTR_SIMULATE_CURSOR of SQL_ATTR_USE_BOOKMARKS, en de cursor stond open. |
| HY000 | Algemene fout | Er is een fout opgetreden waarvoor er geen specifieke SQLSTATE is en waarvoor geen implementatiespecifieke SQLSTATE is gedefinieerd. Het foutbericht dat door SQLGetDiagRec in de *MessageText-buffer wordt geretourneerd, beschrijft de fout en de oorzaak ervan. |
| HY001 | Fout bij geheugentoewijzing | Het stuurprogramma kan geen geheugen toewijzen dat nodig is om de uitvoering of voltooiing van de functie te ondersteunen. |
| HY009 | Ongeldig gebruik van null-aanwijzer | Het Attribuut-argument identificeerde een statement-attribuut dat een string-attribuut vereiste, en het ValuePtr-argument was een nullpointer. |
| HY010 | Fout in functiereeks | (DM) Er is een asynchroon uitgevoerde functie aangeroepen voor de verbindingsgreep die is gekoppeld aan de StatementHandle. Deze asynchrone functie werd nog uitgevoerd toen de SQLSetStmtAttr-functie werd aangeroepen. (DM) SQLExecute, SQLExecDirect of SQLMoreResults werd aangeroepen voor de StatementHandle en geretourneerd SQL_PARAM_DATA_AVAILABLE. Deze functie is aangeroepen voordat gegevens zijn opgehaald voor alle gestreamde parameters. (DM) Een asynchroon uitvoerende functie werd aangeroepen voor de StatementHandle en was nog steeds bezig toen deze functie werd aangeroepen. (DM) SQLExecute, SQLExecDirect, SQLBulkOperations of SQLSetPos werd aangeroepen voor de StatementHandle en geretourneerd SQL_NEED_DATA. Deze functie is aangeroepen voordat gegevens werden verzonden voor alle parameters of kolommen voor uitvoering van gegevens. |
| HY011 | Attribuut kan nu niet worden ingesteld | Het Attribuut was SQL_ATTR_CONCURRENCY, SQL_ ATTR_CURSOR_TYPE, SQL_ ATTR_SIMULATE_CURSOR of SQL_ ATTR_USE_BOOKMARKS, en de verklaring was voorbereid. |
| HY013 | Fout bij geheugenbeheer | De functie-aanroep kan niet worden verwerkt omdat de onderliggende geheugenobjecten niet kunnen worden geopend, mogelijk vanwege weinig geheugen. |
| HY017 | Ongeldig gebruik van een automatisch toegewezen descriptorhandle | (DM) Het argument over het attribuut was SQL_ATTR_IMP_ROW_DESC of SQL_ATTR_IMP_PARAM_DESC. (DM) Het Attribuut-argument was SQL_ATTR_APP_ROW_DESC of SQL_ATTR_APP_PARAM_DESC, en de waarde in ValuePtr was een impliciet toegewezen descriptorhandle anders dan de handle die oorspronkelijk was toegewezen voor de ARD of APD. |
| HY024 | Ongeldige kenmerkwaarde | Gegeven de gespecificeerde Attribuutwaarde werd een ongeldige waarde gespecificeerd in ValuePtr. (De Driver Manager geeft deze SQLSTATE alleen terug voor verbindings- en statementattributen die een discrete set waarden accepteren, zoals SQL_ATTR_ACCESS_MODE of SQL_ ATTR_ASYNC_ENABLE. Voor alle andere verbindings- en statementattributen moet de driver de waarde die in ValuePtr is gespecificeerd, verifiëren.) Het Attribuut-argument was SQL_ATTR_APP_ROW_DESC of SQL_ATTR_APP_PARAM_DESC, en ValuePtr was een expliciet toegewezen descriptorhandle die niet op dezelfde verbinding zit als het StatementHandle-argument . |
| HY090 | Ongeldige tekenreeks- of bufferlengte | (DM) *ValuePtr is een tekenstring, en het StringLength-argument was kleiner dan 0 maar was niet SQL_NTS. |
| HY092 | Ongeldige attribuut/optie-identificatie | (DM) De waarde die werd gespecificeerd voor het argument Attribuut was niet geldig voor de versie van ODBC die door de driver werd ondersteund. (DM) De waarde die werd gespecificeerd voor het argument Attribuut was een alleen-lezen attribuut. |
| HY117 | De verbinding is onderbroken vanwege een onbekende transactiestatus. Alleen de verbinding verbreken en alleen-lezenfuncties zijn toegestaan. | (DM) Zie SQLEndTran Function voor meer informatie over de onderbroken status. |
| HYC00 | Optionele functie niet geïmplementeerd | De waarde die werd gespecificeerd voor het argument Attribuut was een geldig ODBC-statementattribuut voor de versie van ODBC die door de driver werd ondersteund, maar niet door de driver. Het Attribuut-argument was SQL_ATTR_ASYNC_ENABLE, en een aanroep naar SQLGetInfo met een InfoType van SQL_ASYNC_MODE geeft SQL_AM_CONNECTION terug. Het attribuutargument was SQL_ATTR_ENABLE_AUTO_IPD, en de waarde van het verbindingsattribuut SQL_ATTR_AUTO_IPD was SQL_FALSE. |
| HYT01 | Time-out voor de verbinding is overschreden | De time-outperiode voor de verbinding is verlopen voordat de gegevensbron op de aanvraag heeft gereageerd. De time-outperiode voor de verbinding wordt ingesteld via SQLSetConnectAttr, SQL_ATTR_CONNECTION_TIMEOUT. |
| IM001 | Stuurprogramma biedt geen ondersteuning voor deze functie | (DM) Het stuurprogramma dat is gekoppeld aan de StatementHandle biedt geen ondersteuning voor de functie. |
| S1118 | De driver ondersteunt geen asynchrone meldingen | Als SQLSetStmtAttr wordt aangeroepen om SQL_ATTR_ASYNC_STMT_EVENT in te stellen; Asynchrone meldingen worden niet ondersteund door de driver. |
Comments
Statementattributen voor een statement blijven van kracht totdat ze worden gewijzigd door een andere aanroep naar SQLSetStmtAttr of totdat de instructie wordt verwijderd door SQLFreeHandle aan te roepen. Het aanroepen van SQLFreeStmt met de optie SQL_CLOSE, SQL_UNBIND of SQL_RESET_PARAMS reset de statementattributen niet.
Sommige statementattributen ondersteunen substitutie van een vergelijkbare waarde als de databron de in ValuePtr gespecificeerde waarde niet ondersteunt. In zulke gevallen retourneert de driver SQL_SUCCESS_WITH_INFO en SQLSTATE 01S02 (Optionwaarde gewijzigd). Als bijvoorbeeld Attribuut SQL_ATTR_CONCURRENCY is en ValuePtr SQL_CONCUR_ROWVER, en als de databron dit niet ondersteunt, vervangt de driver SQL_CONCUR_VALUES en geeft SQL_SUCCESS_WITH_INFO terug. Om de gesubstitueerde waarde te bepalen, roept een applicatie SQLGetStmtAttr aan.
Het formaat van de informatieset met ValuePtr hangt af van het gespecificeerde attribuut. SQLSetStmtAttr accepteert attribuutinformatie in een van twee verschillende formaten: een tekenstring of een geheel getal. Het formaat van elk wordt vermeld in de beschrijving van het attribuut. Dit formaat geldt voor de informatie die wordt gegenereerd voor elk attribuut in SQLGetStmtAttr. Tekenstrings waarnaar worden verwezen door het ValuePtr-argument van SQLSetStmtAttr hebben een lengte van StringLength.
Note
De mogelijkheid om statement-attributen op verbindingsniveau in te stellen door SQLSetConnectAttr aan te roepen is verouderd in ODBC 3.x. ODBC 3.x-applicaties mogen nooit statementattributen op verbindingsniveau instellen. ODBC 3.x statementattributen kunnen niet op verbindingsniveau worden ingesteld, met uitzondering van de attributen SQL_ATTR_METADATA_ID en SQL_ATTR_ASYNC_ENABLE, die zowel verbindingsattributen als statementattributen zijn, en kunnen worden ingesteld op verbindingsniveau of op statementniveau.
Note
ODBC 3.x-drivers hoeven deze functionaliteit alleen te ondersteunen als ze werken met ODBC 2.x-applicaties die ODBC 2.x-statementopties op verbindingsniveau instellen. Voor meer informatie, zie "Setting Statement Options on the Connection Level" onder SQLSetConnectOption Mapping in Appendix G: Driver Guidelines for Backward Compatiibility.
Statement-attributen die descriptorvelden instellen
Veel statement-attributen komen overeen met een headerveld van een descriptor. Het instellen van deze attributen resulteert in het instellen van de descriptorvelden. Het instellen van velden via een aanroep naar SQLSetStmtAttr in plaats van naar SQLSetDescField heeft als voordeel dat er geen descriptorhandle hoeft te worden verkregen voor de functieaanroep.
Caution
Het aanroepen van SQLSetStmtAttr voor één statement kan andere statements beïnvloeden. Dit gebeurt wanneer de APD of ARD die aan de verklaring is gekoppeld expliciet wordt toegewezen en ook aan andere verklaringen wordt gekoppeld. Omdat SQLSetStmtAttr de APD of ARD wijzigt, gelden de wijzigingen voor alle statements waarmee deze descriptor is gekoppeld. Als dit niet het vereiste gedrag is, moet de applicatie deze descriptor loskoppelen van de andere statements (door SQLSetStmtAttr aan te roepen om het SQL_ATTR_APP_ROW_DESC of SQL_ATTR_APP_PARAM_DESC veld op een andere descriptorhandle te zetten) voordat SQLSetStmtAttr opnieuw wordt aangetrokken.
Wanneer een descriptorveld wordt ingesteld als gevolg van het bijbehorende statement-attribuut dat wordt ingesteld, wordt het veld alleen ingesteld voor de toepasselijke descriptors die momenteel gekoppeld zijn aan de statement die door het StatementHandle-argument is geïdentificeerd, en de attribuutinstelling beïnvloedt geen descriptors die in de toekomst aan die statement kunnen worden gekoppeld. Wanneer een descriptorveld dat ook een statement-attribuut is, wordt ingesteld door een aanroep naar SQLSetDescField, wordt het bijbehorende statement-attribuut ingesteld. Als een expliciet toegewezen descriptor losstaat van een statement, zal een statementattribuut dat overeenkomt met een headerveld terugkeren naar de waarde van het veld in de impliciet toegewezen descriptor.
Wanneer een instructie wordt toegewezen (zie SQLAllocHandle), worden automatisch vier descriptorhandles toegewezen en aan de instructie gekoppeld. Expliciet toegewezen descriptor-handles kunnen aan de instructie worden gekoppeld door SQLAllocHandle aan te roepen met een fHandleType van SQL_HANDLE_DESC om een descriptorhandle toe te wijzen en vervolgens SQLSetStmtAttr aan te roepen om de descriptorhandle aan de instructie te koppelen.
De statementattributen in de volgende tabel komen overeen met de headervelden van de descriptor.
| Statement-attribuut | Koptekstveld | Beschrijving. |
|---|---|---|
| SQL_ATTR_PARAM_BIND_OFFSET_PTR | SQL_DESC_BIND_OFFSET_PTR | APD |
| SQL_ATTR_PARAM_BIND_TYPE | SQL_DESC_BIND_TYPE | APD |
| SQL_ATTR_PARAM_OPERATION_PTR | SQL_DESC_ARRAY_STATUS_PTR | APD |
| SQL_ATTR_PARAM_STATUS_PTR | SQL_DESC_ARRAY_STATUS_PTR | IPD |
| SQL_ATTR_PARAMS_PROCESSED_PTR | SQL_DESC_ROWS_PROCESSED_PTR | IPD |
| SQL_ATTR_PARAMSET_SIZE | SQL_DESC_ARRAY_SIZE | APD |
| SQL_ATTR_ROW_ARRAY_SIZE | SQL_DESC_ARRAY_SIZE | ARD |
| SQL_ATTR_ROW_BIND_OFFSET_PTR | SQL_DESC_BIND_OFFSET_PTR | ARD |
| SQL_ATTR_ROW_BIND_TYPE | SQL_DESC_BIND_TYPE | ARD |
| SQL_ATTR_ROW_OPERATION_PTR | SQL_DESC_ARRAY_STATUS_PTR | ARD |
| SQL_ATTR_ROW_STATUS_PTR | SQL_DESC_ARRAY_STATUS_PTR | IRD |
| SQL_ATTR_ROWS_FETCHED_PTR | SQL_DESC_ROWS_PROCESSED_PTR | IRD |
Verklaringskenmerken
De momenteel gedefinieerde attributen en de versie van ODBC waarin ze zijn geïntroduceerd, worden weergegeven in de volgende tabel; Er wordt verwacht dat er meer attributen door bestuurders zullen worden gedefinieerd om gebruik te maken van verschillende databronnen. Een reeks attributen wordt door ODBC gereserveerd; driverontwikkelaars moeten waarden reserveren voor hun eigen driver-specifieke gebruik van Open Group. Zie Driver-Specific gegevenstypen, descriptortypen, informatietypen, diagnostische typen en kenmerken voor meer informatie.
| Attribute | ValuePtr-inhoud |
|---|---|
| SQL_ATTR_APP_PARAM_DESC (ODBC 3.0) | De handle naar de APD voor latere aanroepen naar SQLExecute en SQLExecDirect op de statement-hand. De beginwaarde van dit attribuut is de descriptor die impliciet werd toegewezen toen de stelling oorspronkelijk werd toegewezen. Als de waarde van dit attribuut wordt ingesteld op SQL_NULL_DESC of de handle die oorspronkelijk voor de descriptor was toegewezen, wordt een expliciet toegewezen APD-handle die eerder aan de statementhandle was gekoppeld hiervan losgekoppeld en keert de statementhandle terug naar de impliciet toegewezen APD-handle. Dit attribuut kan niet worden ingesteld op een descriptorhandle die impliciet is toegewezen aan een andere instructie of aan een andere descriptorhandle die impliciet op dezelfde instructie is ingesteld; impliciet toegewezen descriptor-handles kunnen niet aan meer dan één statement of descriptorhandle worden gekoppeld. |
| SQL_ATTR_APP_ROW_DESC (ODBC 3.0) | De handle naar de ARD voor volgende fetches op de statementhandle. De beginwaarde van dit attribuut is de descriptor die impliciet werd toegewezen toen de stelling oorspronkelijk werd toegewezen. Als de waarde van dit attribuut wordt ingesteld op SQL_NULL_DESC of de handle die oorspronkelijk voor de descriptor was toegewezen, wordt een expliciet toegewezen ARD-handle die eerder aan de statementhandle was gekoppeld hiervan losgekoppeld en keert de statementhandle terug naar de impliciet toegewezen ARD-handle. Dit attribuut kan niet worden ingesteld op een descriptorhandle die impliciet is toegewezen aan een andere instructie of aan een andere descriptorhandle die impliciet op dezelfde instructie is ingesteld; impliciet toegewezen descriptor-handles kunnen niet aan meer dan één statement of descriptorhandle worden gekoppeld. |
| SQL_ATTR_ASYNC_ENABLE (ODBC 1.0) | Een SQLULEN-waarde die specificeert of een functie die met de gespecificeerde instructie wordt aangeroepen asynchroon wordt uitgevoerd: SQL_ASYNC_ENABLE_OFF = Schakel de ondersteuning voor asynchrone uitvoering op statementniveau uit (de standaard). SQL_ASYNC_ENABLE_ON = Ondersteuning voor asynchrone uitvoering op statementniveau inschakelen. Zie Asynchrone uitvoering (pollingmethode) voor meer informatie. Voor drivers met ondersteuning voor asynchrone uitvoering op statementniveau is het statementattribuut SQL_ATTR_ASYNC_ENABLE alleen-lezen. De waarde ervan is gelijk aan de waarde van het verbindingsniveau-attribuut met dezelfde naam op het moment dat de instructiehandle werd toegewezen. SQLSetStmtAttr aanroepen om SQL_ATTR_ASYNC_ENABLE in te stellen wanneer de SQL_ASYNC_MODE InfoType terugkeert SQL_AM_CONNECTION geeft SQLSTATE HYC00 terug (optionele functie niet geïmplementeerd). Voor meer informatie, zie SQLSetConnectAttr Function voor meer informatie. |
| SQL_ATTR_ASYNC_STMT_EVENT (ODBC 3,8) | Een SQLPOINTER-waarde die een event handle is. Melding van voltooiing van asynchrone functies wordt ingeschakeld door SQLSetStmtAttr aan te roepen om het attribuut SQL_ATTR_ASYNC_STMT_EVENT in te stellen en de event handle te specificeren. |
| SQL_ATTR_ASYNC_STMT_PCALLBACK (ODBC 3,8) | Een SQLPOINTER voor de asynchrone callback-functie. Alleen de Driver Manager kan de SQLSetStmtAttr-functie van een driver aanroepen met dit attribuut. |
| SQL_ATTR_ASYNC_STMT_PCONTEXT (ODBC 3.8) | Een SQLPOINTER voor de contextstructuur Alleen de Driver Manager kan de SQLSetStmtAttr-functie van een driver aanroepen met dit attribuut. |
| SQL_ATTR_CONCURRENCY (ODBC 2.0) | Een SQLULEN-waarde die de cursorgelijktijdigheid specificeert: SQL_CONCUR_READ_ONLY = De cursor is alleen-lezen. Updates zijn niet toegestaan. SQL_CONCUR_LOCK = Cursor gebruikt het laagste vergrendelingsniveau dat voldoende is om te garanderen dat de rij kan worden bijgewerkt. SQL_CONCUR_ROWVER = Cursor gebruikt optimistische gelijktijdigheidscontrole, waarbij rijversies zoals SQLBase ROWID of Sybase TIMESTAMP worden vergeleken. SQL_CONCUR_VALUES = Cursor gebruikt optimistische gelijktijdigheidscontrole, waarbij waarden worden vergeleken. De standaardwaarde voor SQL_ATTR_CONCURRENCY is SQL_CONCUR_READ_ONLY. Dit attribuut kan niet worden gespecificeerd voor een open cursor. Voor meer informatie, zie Concurrency Types. Als het SQL_ATTR_CURSOR_TYPE Attribuut wordt gewijzigd naar een type dat de huidige waarde van SQL_ATTR_CONCURRENCY niet ondersteunt, wordt de waarde van SQL_ATTR_CONCURRENCY bij uitvoering gewijzigd en wordt er een waarschuwing gegeven wanneer SQLExecDirect of SQLPrepare wordt aangeroepen. Als de driver de SELECT FOR-instructie UPDATE ondersteunt en zo'n instructie wordt uitgevoerd terwijl de waarde van SQL_ATTR_CONCURRENCY op SQL_CONCUR_READ_ONLY wordt gezet, wordt er een foutmelding teruggegeven. Als de waarde van SQL_ATTR_CONCURRENCY wordt gewijzigd naar een waarde die de driver ondersteunt voor een bepaalde waarde van SQL_ATTR_CURSOR_TYPE maar niet voor de huidige waarde van SQL_ATTR_CURSOR_TYPE, zal de waarde van SQL_ATTR_CURSOR_TYPE bij uitvoering worden gewijzigd en wordt SQLSTATE 01S02 (Optionwaarde gewijzigd) uitgegeven wanneer SQLExecDirect of SQLPrepare wordt aangeroepen. Als de gespecificeerde gelijktijdigheid niet wordt ondersteund door de databron, vervangt de driver een andere gelijktijdigheid en retourneert SQLSTATE 01S02 (Optie waarde gewijzigd). Voor SQL_CONCUR_VALUES vervangt de bestuurder SQL_CONCUR_ROWVER, en andersom. Voor SQL_CONCUR_LOCK vervangt de chauffeur, in volgorde, SQL_CONCUR_ROWVER of SQL_CONCUR_VALUES. De geldigheid van de gesubstitueerde waarde wordt pas gecontroleerd tijdens de uitvoering. Voor meer informatie over de relatie tussen SQL_ATTR_CONCURRENCY en de andere cursorattributen, zie Cursor Characteristics and Cursor Type. |
| SQL_ATTR_CURSOR_SCROLLABLE (ODBC 3.0) | Een SQLULEN-waarde die het ondersteuningsniveau specificeert dat de applicatie vereist. Het instellen van dit attribuut beïnvloedt volgende aanroepen naar SQLExecDirect en SQLExecute. SQL_NONSCROLLABLE = Scrollbare cursors zijn niet vereist op het statementhandvat. Als de applicatie SQLFetchScroll aanroept op deze handle, is de enige geldige waarde van FetchOrientation SQL_FETCH_NEXT. Dit is de standaardwaarde. SQL_SCROLLABLE = Scrollbare cursors zijn vereist op het instructiehandvat. Bij het aanroepen van SQLFetchScroll kan de applicatie elke geldige waarde van FetchOrientation specificeren, waarmee cursorpositionering in andere modi dan de sequentiële modus wordt bereikt. Voor meer informatie over scrollbare cursors, zie Scrollbare cursors. Voor meer informatie over de relatie tussen SQL_ATTR_CURSOR_SCROLLABLE en de andere cursorattributen, zie Cursor Characteristics and Cursor Type |
| SQL_ATTR_CURSOR_SENSITIVITY (ODBC 3.0) | Een SQLULEN-waarde die specificeert of cursors op de instructiehandle de wijzigingen zichtbaar maken die door een andere cursor zijn aangebracht in een resultaat dat door een andere cursor is ingesteld. Het instellen van dit attribuut beïnvloedt volgende aanroepen naar SQLExecDirect en SQLExecute. Een applicatie kan de waarde van dit attribuut teruglezen om de begintoestand of de status zoals het meest recent door de applicatie is ingesteld te verkrijgen. SQL_UNSPECIFIED = Het is niet gespecificeerd welk cursortype het is en of cursors op de instructiehandle de wijzigingen zichtbaar maken die door een andere cursor zijn ingesteld resultaat. Cursors in de instructiegreep kunnen geen, sommige of alle wijzigingen zichtbaar maken. Dit is de standaardwaarde. SQL_INSENSITIVE = Alle cursors op de instructiehandle tonen de resultaatset zonder wijzigingen door een andere cursor te weerspiegelen. Ongevoelige cursors zijn alleen-lezen. Dit komt overeen met een statische cursor, die een gelijktijdigheid heeft die alleen-lezen is. SQL_SENSITIVE = Alle cursors op het statementhandle maken alle wijzigingen zichtbaar die zijn aangebracht in een resultaat dat door een andere cursor is ingesteld. Voor meer informatie over de relatie tussen SQL_ATTR_CURSOR_SENSITIVITY en de andere cursorattributen, zie Cursor Characteristics and Cursor Type. |
| SQL_ATTR_CURSOR_TYPE (ODBC 2.0) | Een SQLULEN-waarde die het cursortype specificeert: SQL_CURSOR_FORWARD_ONLY = De cursor scrollt alleen vooruit. SQL_CURSOR_STATIC = De data in de resultaatset is statisch. SQL_CURSOR_KEYSET_DRIVEN = De driver slaat de sleutels op en gebruikt de sleutels voor het aantal rijen dat in het SQL_ATTR_KEYSET_SIZE-statementattribuut is gespecificeerd. SQL_CURSOR_DYNAMIC = De driver slaat alleen de sleutels op en gebruikt de sleutels voor de rijen in de rijset. De standaardwaarde is SQL_CURSOR_FORWARD_ONLY. Dit attribuut kan niet worden gespecificeerd nadat de SQL-instructie is voorbereid. Als het opgegeven cursortype niet door de databron wordt ondersteund, vervangt de driver een ander cursortype en retourneert SQLSTATE 01S02 (Optionwaarde gewijzigd). Voor een gemengde of dynamische cursor vervangt de driver in volgorde een keyset-gestuurde of statische cursor. Voor een keyset-gestuurde cursor vervangt de driver een statische cursor. Voor meer informatie over scrollbare cursortypes, zie Scrollbare cursortypes. Voor meer informatie over de relatie tussen SQL_ATTR_CURSOR_TYPE en de andere cursorattributen, zie Cursor Characteristics and Cursor Type. |
| SQL_ATTR_ENABLE_AUTO_IPD (ODBC 3.0) | Een SQLULEN-waarde die aangeeft of de automatische populatie van de IPD wordt uitgevoerd: SQL_TRUE = Schakelt automatische populatie van de IPD in na een aanroep naar SQLPrepare. SQL_FALSE = Schakelt automatische populatie van de IPD uit na een oproep naar SQLPrepare. (Een applicatie kan nog steeds IPD-veldinformatie verkrijgen door SQLDescribePam aan te roepen, indien ondersteund.) De standaardwaarde van het statementattribuut SQL_ATTR_ENABLE_AUTO_IPD is SQL_FALSE. Voor meer informatie, zie Automatische populatie van de IPD. |
| SQL_ATTR_FETCH_BOOKMARK_PTR (ODBC 3.0) | Een SQLLEN * die naar een binaire bladwijzerwaarde wijst. Wanneer SQLFetchScroll wordt aangeroepen met fFetchOrientation gelijk aan SQL_FETCH_BOOKMARK, haalt de driver de bladwijzerwaarde uit dit veld. Dit veld is standaard een nullpointer. Voor meer informatie, zie Scrollen door Bladwijzer. De waarde waarnaar dit veld wijst, wordt niet gebruikt voor verwijderen door bladwijzer, bijwerken door bladwijzer of ophalen door bladwijzer in SQLBulkOperations, die bladwijzers gebruiken die in rijsetbuffers zijn gecached. |
| SQL_ATTR_IMP_PARAM_DESC (ODBC 3.0) | Het handvat van de IPD. De waarde van dit attribuut is de descriptor die werd toegewezen toen de instructie oorspronkelijk werd toegewezen. De applicatie kan deze attribuut niet instellen. Dit attribuut kan worden opgehaald door een aanroep naar SQLGetStmtAttr , maar niet worden ingesteld door een aanroep naar SQLSetStmtAttr. |
| SQL_ATTR_IMP_ROW_DESC (ODBC 3.0) | Het adres van de IRD. De waarde van dit attribuut is de descriptor die werd toegewezen toen de instructie oorspronkelijk werd toegewezen. De applicatie kan deze attribuut niet instellen. Dit attribuut kan worden opgehaald door een aanroep naar SQLGetStmtAttr , maar niet worden ingesteld door een aanroep naar SQLSetStmtAttr. |
| SQL_ATTR_KEYSET_SIZE (ODBC 2.0) | Een SQLULEN die het aantal rijen in de keyset specificeert voor een keyset-gestuurde cursor. Als de grootte van de keyset 0 is (de standaard), is de cursor volledig keyset-gestuurd. Als de keysetgrootte groter is dan 0, wordt de cursor gemengd (keyset-gestuurd binnen de keyset en dynamisch buiten de keyset). De standaard toetsensetgrootte is 0. Voor meer informatie over keyset-gestuurde cursors, zie Keyset-Driven Cursors. Als de gespecificeerde grootte de maximale sleutelsetgrootte overschrijdt, vervangt de driver die grootte en geeft SQLSTATE 01S02 (Optionwaarde gewijzigd) terug. SQLFetch of SQLFetchScroll geeft een foutmelding als de sleutelsetgrootte groter is dan 0 en kleiner dan de rijsetgrootte. |
| SQL_ATTR_MAX_LENGTH (ODBC 1.0) | Een SQLULEN-waarde die de maximale hoeveelheid data specificeert die de driver teruggeeft vanuit een teken of binaire kolom. Als ValuePtr korter is dan de lengte van de beschikbare data, korten SQLFetch of SQLGetData de data af en geven SQL_SUCCESS terug. Als ValuePtr 0 is (de standaard), probeert de driver alle beschikbare data terug te geven. Als de opgegeven lengte kleiner is dan de minimale hoeveelheid data die de databron kan teruggeven of groter dan de maximale hoeveelheid data die de databron kan teruggeven, vervangt de driver die waarde en retourneert SQLSTATE 01S02 (Optie waarde gewijzigd). De waarde van dit attribuut kan worden ingesteld op een open cursor; echter, de instelling treedt mogelijk niet direct in werking, in welk geval de driver SQLSTATE 01S02 (Optionwaarde gewijzigd) teruggeeft en het attribuut terugzet naar de oorspronkelijke waarde. Dit attribuut is bedoeld om netwerkverkeer te verminderen en moet alleen worden ondersteund wanneer de databron (in tegenstelling tot de driver) in een meerlagige driver deze kan implementeren. Dit mechanisme mag niet door applicaties worden gebruikt om data af te kappen; om ontvangen data af te korten, moet een applicatie de maximale bufferlengte specificeren in het BufferLength-argument in SQLBindCol of SQLGetData. |
| SQL_ATTR_MAX_ROWS (ODBC 1.0) | Een SQLULEN-waarde die overeenkomt met het maximale aantal rijen dat voor een SELECT-instructie naar de applicatie moet terugkeren. Als *ValuePtr gelijk is aan 0 (de standaard), geeft de driver alle rijen terug. Deze eigenschap is bedoeld om het netwerkverkeer te verminderen. Conceptueel wordt het toegepast wanneer de resultaatset wordt aangemaakt en beperkt de resultaatset tot de eerste ValuePtr-rijen . Als het aantal rijen in de resultaatset groter is dan ValuePtr, wordt de resultaatverzameling afgekapt. SQL_ATTR_MAX_ROWS geldt voor alle resultaatsets op de Statement, inclusief die welke door catalogusfuncties worden teruggegeven. SQL_ATTR_MAX_ROWS stelt een maximum vast voor de waarde van het aantal cursorrijen. Een driver mag SQL_ATTR_MAX_ROWS gedrag voor SQLFetch of SQLFetchScroll niet emuleren (als beperkingen op de grootte van de resultaatset niet kunnen worden geïmplementeerd bij de databron) als het niet kan garanderen dat SQL_ATTR_MAX_ROWS correct wordt geïmplementeerd. Het is door drivers gedefinieerd of SQL_ATTR_MAX_ROWS geldt voor andere statements dan SELECT-instructies (zoals catalogusfuncties). De waarde van dit attribuut kan worden ingesteld op een open cursor; echter, de instelling treedt mogelijk niet direct in werking, in welk geval de driver SQLSTATE 01S02 (Optionwaarde gewijzigd) teruggeeft en het attribuut terugzet naar de oorspronkelijke waarde. |
| SQL_ATTR_METADATA_ID (ODBC 3.0) | Een SQLULEN-waarde die bepaalt hoe de stringargumenten van catalogusfuncties worden behandeld. Als SQL_TRUE, worden de stringargumenten van catalogusfuncties behandeld als identifiers. De zaak is niet significant. Voor niet-gescheiden strings verwijdert de driver alle trailing spaces en wordt de string gevouwen tot hoofdletters. Voor gescheiden strings verwijdert de driver alle leidende of trailing spaces en neemt letterlijk alles wat tussen de scheidingstekens zit. Als een van deze argumenten wordt ingesteld op een nullpointer, geeft de functie SQL_ERROR en SQLSTATE HY009 (Ongeldig gebruik van nullpointer) terug. Als SQL_FALSE, worden de stringargumenten van catalogusfuncties niet als identificaties behandeld. De zaak is belangrijk. Ze kunnen een stringzoekpatroon bevatten of niet, afhankelijk van het argument. De standaardwaarde is SQL_FALSE. Het TableType-argument van SQLTables, dat een lijst van waarden neemt, wordt niet beïnvloed door dit attribuut. SQL_ATTR_METADATA_ID kan ook op het aansluitingsniveau worden ingesteld. (Het en SQL_ATTR_ASYNC_ENABLE zijn de enige statement-attributen die ook verbindingsattributen zijn.) Zie Argumenten in Catalogusfuncties voor meer informatie. |
| SQL_ATTR_NOSCAN (ODBC 1.0) | Een SQLULEN-waarde die aangeeft of de driver SQL-strings moet scannen op escape-sequenties: SQL_NOSCAN_OFF = De driver scant SQL-strings op escape-sequenties (de standaard). SQL_NOSCAN_ON = De driver scant geen SQL-strings op escape-sequenties. In plaats daarvan stuurt de driver de instructie direct naar de databron. Voor meer informatie, zie Escape Sequences in ODBC. |
| SQL_ATTR_PARAM_BIND_OFFSET_PTR (ODBC 3.0) | Een SQLULEN *-waarde die wijst naar een offset die aan pointers is toegevoegd om de binding van dynamische parameters te wijzigen. Als dit veld niet-nul is, dereferert de driver de pointer, voegt de dereferencede waarde toe aan elk van de uitgestelde velden in het descriptorrecord (SQL_DESC_DATA_PTR, SQL_DESC_INDICATOR_PTR en SQL_DESC_OCTET_LENGTH_PTR), en gebruikt de nieuwe pointerwaarden bij het binden. Deze staat standaard op null. De bindoffset wordt altijd direct toegevoegd aan de velden SQL_DESC_DATA_PTR, SQL_DESC_INDICATOR_PTR en SQL_DESC_OCTET_LENGTH_PTR. Als de offset wordt gewijzigd naar een andere waarde, wordt de nieuwe waarde nog steeds direct toegevoegd aan de waarde in het descriptorveld. De nieuwe offset wordt niet toegevoegd aan de veldwaarde plus eerdere offsets. Voor meer informatie, zie Parameter Binding Offsets. Door dit statement-attribuut in te stellen, wordt het veld SQL_DESC_BIND_OFFSET_PTR in de APD-header ingesteld. |
| SQL_ATTR_PARAM_BIND_TYPE (ODBC 3.0) | Een SQLULEN-waarde die aangeeft welke bindingsoriëntatie gebruikt moet worden voor dynamische parameters. Dit veld is ingesteld op SQL_PARAM_BIND_BY_COLUMN (de standaard) om kolomgebonden binding te selecteren. Om rijgewijze binding te selecteren, wordt dit veld ingesteld op de lengte van de structuur of een instantie van een buffer die gebonden zal zijn aan een set dynamische parameters. Deze lengte moet ruimte bevatten voor alle gebonden parameters en eventuele opvulling van de structuur of buffer om ervoor te zorgen dat, wanneer het adres van een gebonden parameter wordt verhoogd met de opgegeven lengte, het resultaat naar het begin van dezelfde parameter in de volgende set parameters zal wijzen. Bij gebruik van de sizeof-operator in ANSI C is dit gedrag gegarandeerd. Voor meer informatie, zie Binding Arrays of Parameters. Door dit statement-attribuut in te stellen, wordt het veld SQL_DESC_ BIND_TYPE in de APD-header ingesteld. |
| SQL_ATTR_PARAM_OPERATION_PTR (ODBC 3.0) | Een SQLUSMALLINT *-waarde die verwijst naar een array van SQLUSMALLINT-waarden die worden gebruikt om een parameter te negeren tijdens de uitvoering van een SQL-instructie. Elke waarde wordt ingesteld op SQL_PARAM_PROCEED (voor de uit te voeren parameter) of SQL_PARAM_IGNORE (zodat de parameter genegeerd moet worden). Een set parameters kan tijdens de verwerking worden genegeerd door de statuswaarde in de array waarnaar SQL_DESC_ARRAY_STATUS_PTR in de APD wijst te zetten op SQL_PARAM_IGNORE. Een set parameters wordt verwerkt als de statuswaarde op SQL_PARAM_PROCEED is ingesteld of als er geen elementen in de array zijn ingesteld. Dit statement-attribuut kan worden ingesteld op een nullpointer, in welk geval de driver geen parameterstatuswaarden teruggeeft. Dit attribuut kan op elk moment worden ingesteld, maar de nieuwe waarde wordt pas gebruikt bij de volgende keer dat SQLExecDirect of SQLExecute wordt aangeroepen. Dit attribuut wordt genegeerd wanneer er geen boundparameter is. Voor meer informatie, zie Gebruik van Arrays of Parameters. Door deze instructie-attribuut in te stellen, wordt het veld SQL_DESC_ARRAY_STATUS_PTR in de APD-header ingesteld. |
| SQL_ATTR_PARAM_STATUS_PTR (ODBC 3.0) | Een SQLUSMALLINT *-waarde die wijst naar een array van SQLUSMALLINT-waarden met statusinformatie voor elke rij parameterwaarden na een aanroep naar SQLExecute of SQLExecDirect. Dit veld is alleen vereist als PARAMSET_SIZE groter is dan 1. De statuswaarden kunnen de volgende waarden bevatten: SQL_PARAM_SUCCESS: De SQL-instructie werd succesvol uitgevoerd voor deze set parameters. SQL_PARAM_SUCCESS_WITH_INFO: De SQL-instructie werd succesvol uitgevoerd voor deze set parameters; echter, waarschuwingsinformatie is beschikbaar in de diagnostische datastructuur. SQL_PARAM_ERROR: Er was een fout bij het verwerken van deze set parameters. Aanvullende foutinformatie is beschikbaar in de diagnostische datastructuur. SQL_PARAM_UNUSED: Deze parameterset werd niet gebruikt, mogelijk omdat een eerdere parameterset een fout veroorzaakte die verdere verwerking onderbrak, of omdat SQL_PARAM_IGNORE was ingesteld voor die set parameters in de array die door de SQL_ATTR_PARAM_OPERATION_PTR was gespecificeerd. SQL_PARAM_DIAG_UNAVAILABLE: De driver behandelt arrays van parameters als een monolithische eenheid en genereert dus niet dit niveau van foutinformatie. Dit statement-attribuut kan worden ingesteld op een nullpointer, in welk geval de driver geen parameterstatuswaarden teruggeeft. Dit attribuut kan op elk moment worden ingesteld, maar de nieuwe waarde wordt pas gebruikt bij de volgende keer dat SQLExecute of SQLExecDirect wordt aangeroepen. Let op dat het instellen van dit attribuut invloed kan hebben op het gedrag van de uitvoerparameters die door de driver wordt geïmplementeerd. Voor meer informatie, zie Gebruik van Arrays of Parameters. Door dit statement-attribuut in te stellen, wordt het SQL_DESC_ARRAY_STATUS_PTR-veld in de IPD-header ingesteld. |
| SQL_ATTR_PARAMS_PROCESSED_PTR (ODBC 3.0) | Een SQLULEN * recordveld dat wijst naar een buffer waarin het aantal verzamelingen parameters dat is verwerkt, inclusief foutensets, wordt teruggegeven. Er wordt geen getal teruggegeven als dit een nullpointer is. Door deze statement-attribuut in te stellen, wordt het SQL_DESC_ROWS_PROCESSED_PTR-veld in de IPD-header ingesteld. Als de aanroep naar SQLExecDirect of SQLExecute die de buffer invult waarnaar dit attribuut wijst niet SQL_SUCCESS of SQL_SUCCESS_WITH_INFO teruggeeft, is de inhoud van de buffer ongedefinieerd. Voor meer informatie, zie Gebruik van Arrays of Parameters. |
| SQL_ATTR_PARAMSET_SIZE (ODBC 3.0) | Een SQLULEN-waarde die het aantal waarden voor elke parameter specificeert. Als SQL_ATTR_PARAMSET_SIZE groter is dan 1, wijzen SQL_DESC_DATA_PTR, SQL_DESC_INDICATOR_PTR en SQL_DESC_OCTET_LENGTH_PTR van de APD naar arrays. De kardinaliteit van elke array is gelijk aan de waarde van dit veld. Dit attribuut wordt genegeerd wanneer er geen boundparameter is. Voor meer informatie, zie Gebruik van Arrays of Parameters. Door deze instructie-attribuut in te stellen, wordt het veld SQL_DESC_ARRAY_SIZE in de APD-header ingesteld. |
| SQL_ATTR_QUERY_TIMEOUT (ODBC 1.0) | Een SQLULEN-waarde die overeenkomt met het aantal seconden dat moet wachten tot een SQL-instructie wordt uitgevoerd voordat het terugkeert naar de applicatie. Als ValuePtr gelijk is aan 0 (standaard), is er geen timeout. Als de gespecificeerde timeout de maximale timeout in de databron overschrijdt of kleiner is dan de minimale timeout, vervangt SQLSetStmtAttr die waarde en geeft SQLSTATE 01S02 (Optie waarde gewijzigd) terug. Let op dat de applicatie SQLCloseCursor niet hoeft aan te roepen om de instructie opnieuw te gebruiken als een SELECT-instructie verloopt. De querytimeout die in deze instructie-attribuut is ingesteld is geldig in zowel synchrone als asynchrone modi. |
| SQL_ATTR_RETRIEVE_DATA (ODBC 2.0) | Een SQLULEN-waarde: SQL_RD_ON = SQLFetchScroll en, in ODBC 3.x, SQLFetch haalt data op nadat de cursor naar de opgegeven locatie is gepositioneerd. Dit is de standaardwaarde. SQL_RD_OFF = SQLFetchScroll en, in ODBC 3.x, SQLFetch halen geen gegevens op nadat het de cursor heeft gepositioneerd. Door SQL_RETRIEVE_DATA op SQL_RD_OFF te zetten, kan een applicatie verifiëren dat er een rij bestaat of een bladwijzer voor die rij ophalen zonder de overhead van het ophalen van rijen te veroorzaken. Voor meer informatie, zie Scrolling and Fetching Rows. De waarde van dit attribuut kan worden ingesteld op een open cursor; echter, de instelling treedt mogelijk niet direct in werking, in welk geval de driver SQLSTATE 01S02 (Optionwaarde gewijzigd) teruggeeft en het attribuut terugzet naar de oorspronkelijke waarde. |
| SQL_ATTR_ROW_ARRAY_SIZE (ODBC 3.0) | Een SQLULEN-waarde die het aantal rijen specificeert dat door elke aanroep naar SQLFetch of SQLFetchScroll wordt teruggegeven. Het is ook het aantal rijen in een bladwijzerarray dat wordt gebruikt in een bulkbladwijzeroperatie in SQLBulkOperations. De standaardwaarde is 1. Als de opgegeven rijsetgrootte de maximale rijsetgrootte die door de databron wordt ondersteund overschrijdt, vervangt de driver die waarde en retourneert SQLSTATE 01S02 (Optionwaarde gewijzigd). Voor meer informatie, zie Rowset Size. Door dit statement-attribuut in te stellen, wordt het SQL_DESC_ARRAY_SIZE veld in de ARD-header ingesteld. |
| SQL_ATTR_ROW_BIND_OFFSET_PTR (ODBC 3.0) | Een SQLULEN *-waarde die wijst naar een offset die aan pointers is toegevoegd om de binding van kolomgegevens te wijzigen. Als dit veld niet-nul is, dereferert de driver de pointer, voegt de dereferencede waarde toe aan elk van de uitgestelde velden in het descriptorrecord (SQL_DESC_DATA_PTR, SQL_DESC_INDICATOR_PTR en SQL_DESC_OCTET_LENGTH_PTR), en gebruikt de nieuwe pointerwaarden bij het binden. Deze staat standaard op null. Door dit statement-attribuut in te stellen, wordt het SQL_DESC_BIND_OFFSET_PTR-veld in de ARD-header ingesteld. |
| SQL_ATTR_ROW_BIND_TYPE (ODBC 1.0) | Een SQLULEN-waarde die de bindingsoriëntatie instelt die gebruikt moet worden wanneer SQLFetch of SQLFetchScroll wordt aangeroepen op de bijbehorende instructie. Kolom-gewijze binding wordt geselecteerd door de waarde op SQL_BIND_BY_COLUMN te zetten. Rijgewijze binding wordt geselecteerd door de waarde in te stellen op de lengte van een structuur of een instantie van een buffer waarin de resultaatkolommen worden gebonden. Als een lengte is opgegeven, moet deze ruimte bevatten voor alle gebonden kolommen en eventuele opvulling van de structuur of buffer om ervoor te zorgen dat, wanneer het adres van een gebonden kolom wordt verhoogd met de gespecificeerde lengte, het resultaat naar het begin van dezelfde kolom in de volgende rij zal wijzen. Bij gebruik van de sizeof-operator met structuren of unies in ANSI C is dit gedrag gegarandeerd. Kolomgebonden binding is de standaard bindingsoriëntatie voor SQLFetch en SQLFetchScroll. Voor meer informatie, zie Bindingskolommen voor gebruik met blokcursors. Door dit statement-attribuut in te stellen, wordt het SQL_DESC_BIND_TYPE veld in de ARD-header ingesteld. |
| SQL_ATTR_ROW_NUMBER (ODBC 2.0) | Een SQLULEN-waarde die het nummer is van de huidige rij in de gehele resultaatset. Als het nummer van de huidige rij niet kan worden bepaald of er geen huidige rij is, geeft de bestuurder 0 terug. Dit attribuut kan worden opgehaald door een aanroep naar SQLGetStmtAttr , maar niet worden ingesteld door een aanroep naar SQLSetStmtAttr. |
| SQL_ATTR_ROW_OPERATION_PTR (ODBC 3.0) | Een SQLUSMALLINT *-waarde die wijst naar een array van SQLUSMALLINT-waarden die worden gebruikt om een rij te negeren tijdens een bulkoperatie met SQLSetPos. Elke waarde wordt ingesteld op SQL_ROW_PROCEED (zodat de rij in de bulkoperatie wordt opgenomen) of SQL_ROW_IGNORE (zodat de rij wordt uitgesloten van de bulkbewerking). (Rijen kunnen niet worden genegeerd door deze array te gebruiken tijdens aanroepen naar SQLBulkOperations.) Dit statement-attribuut kan worden ingesteld op een nullpointer, in welk geval de driver geen rijstatuswaarden teruggeeft. Dit attribuut kan op elk moment worden ingesteld, maar de nieuwe waarde wordt pas gebruikt bij de volgende aanroep van SQLSetPos . Voor meer informatie, zie Bijwerken van rijen in de rijset met SQLSetPos en het verwijderen van rijen in de rijverzameling met SQLSetPos. Door dit statement-attribuut in te stellen, wordt het SQL_DESC_ARRAY_STATUS_PTR-veld in de ARD ingesteld. |
| SQL_ATTR_ROW_STATUS_PTR (ODBC 3.0) | Een SQLUSMALLINT * waarde die wijst naar een array van SQLUSMALLINT-waarden met rijstatuswaarden na een aanroep naar SQLFetch of SQLFetchScroll. De array heeft evenveel elementen als er rijen in de rijset zijn. Dit statement-attribuut kan worden ingesteld op een nullpointer, in welk geval de driver geen rijstatuswaarden teruggeeft. Dit attribuut kan op elk moment worden ingesteld, maar de nieuwe waarde wordt pas gebruikt bij de volgende keer dat SQLBulkOperations, SQLFetch, SQLFetchScroll of SQLSetPos wordt aangeroepen . Voor meer informatie, zie Aantal opgehaalde rijen en Status. Door dit statement-attribuut in te stellen, wordt het veld SQL_DESC_ARRAY_STATUS_PTR in de IRD-header ingesteld. Dit attribuut wordt door een ODBC 2.x-driver toegewezen aan de rgbRowStatus-array in een aanroep van SQLExtendedFetch. |
| SQL_ATTR_ROWS_FETCHED_PTR (ODBC 3.0) | Een SQLULEN *-waarde die wijst naar een buffer waarin het aantal rijen dat na een aanroep naar SQLFetch of SQLFetchScroll is teruggegeven moet worden; het aantal rijen dat wordt beïnvloed door een bulkoperatie uitgevoerd door een aanroep naar SQLSetPos met een Operation-argument van SQL_REFRESH; of het aantal rijen dat wordt beïnvloed door een bulkoperatie uitgevoerd door SQLBulkOperations. Dit aantal omvat foutrijen. Voor meer informatie, zie Aantal opgehaalde rijen en Status. Door dit statement-attribuut in te stellen, wordt het veld SQL_DESC_ROWS_PROCESSED_PTR in de IRD-header ingesteld. Als de aanroep naar SQLFetch of SQLFetchScroll die de buffer invult waar dit attribuut naar verwijst, geen SQL_SUCCESS of SQL_SUCCESS_WITH_INFO teruggeeft, zijn de inhoud van de buffer niet gedefinieerd. |
| SQL_ATTR_SIMULATE_CURSOR (ODBC 2.0) | Een SQLULEN-waarde die specificeert of drivers die gepositioneerde update- en delete-instructies simuleren, garanderen dat zulke statements slechts één enkele rij beïnvloeden. Om gepositioneerde update- en delete-statements te simuleren, construeren de meeste drivers een doorzoekde UPDATE of DELETE statement met een WHERE-clausule die de waarde van elke kolom in de huidige rij specificeert. Tenzij deze kolommen samen een unieke sleutel vormen, kan zo'n uitspraak meer dan één rij beïnvloeden. Om te garanderen dat zulke statements slechts één rij beïnvloeden, bepaalt de driver de kolommen in een unieke sleutel en voegt deze kolommen toe aan de resultaatset. Als een applicatie garandeert dat de kolommen in de resultaatset een unieke sleutel vormen, is de driver niet verplicht dit te doen. Dit kan de uitvoeringstijd verkorten. SQL_SC_NON_UNIQUE = De driver garandeert niet dat gesimuleerde gepositioneerde update- of delete-instructies slechts één rij beïnvloeden; Het is de verantwoordelijkheid van de applicatie om dit te doen. Als een instructie meer dan één rij beïnvloedt, geeft SQLExecute, SQLExecDirect of SQLSetPos SQLSTATE 01001 terug (cursoroperatieconflict). SQL_SC_TRY_UNIQUE = De driver probeert te garanderen dat gesimuleerde gepositioneerde update- of delete-instructies slechts één rij beïnvloeden. Het stuurprogramma voert dergelijke instructies altijd uit, zelfs als deze van invloed kunnen zijn op meer dan één rij, bijvoorbeeld wanneer er geen unieke sleutel is. Als een instructie meer dan één rij beïnvloedt, geeft SQLExecute, SQLExecDirect of SQLSetPos SQLSTATE 01001 terug (cursoroperatieconflict). SQL_SC_UNIQUE = De driver garandeert dat gesimuleerde gepositioneerde update- of delete-instructies slechts één rij beïnvloeden. Als de driver dit niet kan garanderen voor een bepaalde instructie, geeft SQLExecDirect of SQLPrepare een foutmelding terug. Als de databron native SQL-ondersteuning biedt voor gepositioneerde update- en delete-instructies en de driver cursors niet simuleert, wordt SQL_SUCCESS teruggegeven wanneer SQL_SC_UNIQUE wordt aangevraagd voor SQL_SIMULATE_CURSOR. SQL_SUCCESS_WITH_INFO wordt teruggestuurd als SQL_SC_TRY_UNIQUE of SQL_SC_NON_UNIQUE wordt gevraagd. Als de databron het SQL_SC_TRY_UNIQUE ondersteuningsniveau biedt en de driver niet, wordt SQL_SUCCESS teruggegeven voor SQL_SC_TRY_UNIQUE en SQL_SUCCESS_WITH_INFO voor SQL_SC_NON_UNIQUE. Als het opgegeven cursorsimulatietype niet door de databron wordt ondersteund, vervangt de driver een ander simulatietype en retourneert SQLSTATE 01S02 (Optionwaarde gewijzigd). Voor SQL_SC_UNIQUE vervangt de bestuurder in volgorde SQL_SC_TRY_UNIQUE of SQL_SC_NON_UNIQUE. Voor SQL_SC_TRY_UNIQUE vervangt de bestuurder SQL_SC_NON_UNIQUE. De standaard is SQL_SC_UNIQUE. Voor meer informatie, zie Simuleren van gepositioneerde update- en verwijderingsinstructies. |
| SQL_ATTR_USE_BOOKMARKS (ODBC 2.0) | Een SQLULEN-waarde die aangeeft of een applicatie bladwijzers met een cursor zal gebruiken: SQL_UB_OFF = Uit (de standaard) SQL_UB_VARIABLE = Een applicatie gebruikt bladwijzers met een cursor, en de driver levert bladwijzers van variabele lengte als deze worden ondersteund. SQL_UB_FIXED is verouderd in ODBC 3.x. ODBC 3.x-applicaties moeten altijd bladwijzers met variabele lengte gebruiken, zelfs bij het werken met ODBC 2.x-drivers (die alleen 4-byte, vaste bladwijzers ondersteunden). Dit komt doordat een bladwijzer met vaste lengte slechts een speciaal geval is van een bladwijzer met variabele lengte. Bij het werken met een ODBC 2.x-driver koppelt de Driver Manager SQL_UB_VARIABLE aan SQL_UB_FIXED. Om bladwijzers met een cursor te gebruiken, moet de applicatie dit attribuut specificeren met de waarde SQL_UB_VARIABLE voordat de cursor wordt geopend. Voor meer informatie, zie Bladwijzers ophalen. |
[1] Deze functies kunnen alleen asynchroon worden aangeroepen als de descriptor een implementatiedescriptor is, geen applicatiedescriptor.
Zie Column-Wise Binding en Row-Wise Binding.
Gerelateerde functies
| Voor informatie over | Zien! |
|---|---|
| Verwerking van instructie annuleren | SQLCancel, functie |
| De instelling van een verbindingskenmerk retourneren | SQLGetConnectAttr, functie |
| De instelling van een instructiekenmerk retourneren | SQLGetStmtAttr, functie |
| Een verbindingsattribuut instellen | SQLSetConnectAttr-functie |
| Het instellen van een enkel veld van de descriptor | SQLSetDescField-functie |