Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Soulad
Představená verze: ODBC 3.0 Shoda s normami: ISO 92
Shrnutí
SQLSetStmtAttr nastavuje atributy související s příkazem.
Note
Pro více informací o tom, na co Driver Manager mapuje tuto funkci, když aplikace ODBC 3.x pracuje s ovladačem ODBC 2.x , viz Funkce nahrazování mapování pro zpětnou kompatibilitu aplikací.
Syntax
SQLRETURN SQLSetStmtAttr(
SQLHSTMT StatementHandle,
SQLINTEGER Attribute,
SQLPOINTER ValuePtr,
SQLINTEGER StringLength);
Arguments
StatementHandle
[Vstup] Popisovač příkazu
Atribut
[Vstup] Možnost nastavit, uvedená v "Komentářích."
ValuePtr
[Vstup] Hodnota je spojena s atributem. V závislosti na hodnotě atributubude hodnota Ptr jednou z následujících:
Název s popisem ODBC.
Hodnota SQLUINTEGER.
Hodnota SQLULEN.
Ukazatel na jednu z následujících oblastí:
Znakový řetězec s nulovým ukončením.
Binární buffer.
Hodnota nebo pole typu SQLLEN, SQLULEN nebo SQLUSMALLINT.
Hodnota definovaná ovladačem.
Pokud je argument Attribute hodnotou specifickou pro ovladač, může být ValuePtr podepsané celé číslo.
StringLength
[Vstup] Pokud je Attribute atribut definovaný ODBC a ValuePtr ukazuje na znakový řetězec nebo binární buffer, měl by být tento argument délka *ValuePtr. Pokud je Attribute atribut definovaný ODBC a ValuePtr je celé číslo, StringLength se ignoruje .
Pokud je Attribute atribut definovaný ovladačem, aplikace určuje povahu atributu Driver Manageru nastavením argumentu StringLength . StringLength může mít následující hodnoty:
Pokud je ValuePtr ukazatelem na řetězec znaků, pak StringLength je délka řetězce nebo SQL_NTS.
Pokud je ValuePtr ukazatelem na binární buffer, aplikace umístí výsledek makra SQL_LEN_BINARY_ATTR(length) do StringLength. To umisťuje zápornou hodnotu v StringLength.
Pokud je ValuePtr ukazatelem na hodnotu jinou než řetězec znaků nebo binární řetězec, pak by StringLength měla mít hodnotu SQL_IS_POINTER.
Pokud ValuePtr obsahuje hodnotu pevné délky, pak je StringLength buď SQL_IS_INTEGER, nebo SQL_IS_UINTEGER, jak je vhodné.
Returns
SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR nebo SQL_INVALID_HANDLE.
Diagnostics
Když SQLSetStmtAttr vrátí SQL_ERROR nebo SQL_SUCCESS_WITH_INFO, lze získat přidruženou hodnotu SQLSTATE voláním SQLGetDiagRec s HandleType SQL_HANDLE_STMT a HandleCommandHandle. Následující tabulka uvádí hodnoty SQLSTATE, které SQLSetStmtAttr běžně vrací, a vysvětluje každou z nich v kontextu této funkce; notace "(DM)" předchází popisům SQLstavů vráceným Správcem ovladačů. Návratový kód přidružený ke každé hodnotě SQLSTATE je SQL_ERROR, pokud není uvedeno jinak.
| SQLSTATE | Error | Description |
|---|---|---|
| 01000 | Obecné upozornění | Informační zpráva specifická pro řidiče (Funkce vrátí SQL_SUCCESS_WITH_INFO.) |
| 01S02 | Změna hodnoty možnosti | Ovladač nepodporoval hodnotu zadanou v ValuePtr, nebo hodnota uvedená v ValuePtr byla neplatná kvůli pracovním podmínkám implementace, takže ovladač nahradil podobnou hodnotou. (SQLGetStmtAttr lze volat pro určení dočasně nahrané hodnoty.) Substituční hodnota je platná pro StatementHandle dokud není kurzor uzavřen, poté se atribut příkazu vrátí na svou předchozí hodnotu. Atributy příkazu, které lze změnit, jsou: 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 (Funkce vrátí SQL_SUCCESS_WITH_INFO.) |
| 08S01 | Selhání komunikačního propojení | Komunikační propojení mezi ovladačem a zdrojem dat, ke kterému byl ovladač připojen, selhalo před dokončením zpracování funkce. |
| 24000 | Neplatný stav kurzoru | Atribut byl SQL_ATTR_CONCURRENCY, SQL_ATTR_CURSOR_TYPE, SQL_ATTR_SIMULATE_CURSOR nebo SQL_ATTR_USE_BOOKMARKS a kurzor byl otevřený. |
| HY000 | Obecná chyba | Došlo k chybě, pro kterou nebyla definována žádná specifická funkce SQLSTATE a pro kterou nebyla definována žádná implementace sqlSTATE. Chybová zpráva vrácená nástrojem SQLGetDiagRec v vyrovnávací paměti *MessageText popisuje chybu a její příčinu. |
| HY001 | Chyba přidělení paměti | Ovladač nemohl přidělit paměť potřebnou k podpoře provádění nebo dokončení funkce. |
| HY009 | Neplatné použití ukazatele null | Argument Attribute identifikoval atribut příkazu, který vyžadoval atribut řetězce, a argument ValuePtr byl nulový ukazatel. |
| HY010 | Chyba posloupnosti funkcí | (DM) Byla volána asynchronně spuštěná funkce pro popisovač připojení, který je přidružen k StatementHandle. Tato asynchronní funkce se stále spouštěla, když byla volána funkce SQLSetStmtAttr . (DM) SQLExecute, SQLExecDirect nebo SQLMoreResults byl volána pro StatementHandle a vrácena SQL_PARAM_DATA_AVAILABLE. Tato funkce byla volána před načtením dat pro všechny streamované parametry. (DM) Byla volána asynchronně vykonávající funkce pro CommandHandle a stále se spouštěla, když byla tato funkce vyvolána. (DM) SQLExecute, SQLExecDirect, SQLBulkOperations nebo SQLSetPos byly volány pro StatementHandle a vráceny SQL_NEED_DATA. Tato funkce byla volána před odesláním dat pro všechny parametry provádění dat nebo sloupce. |
| HY011 | Atribut nelze nyní nastavit | Atribut byl SQL_ATTR_CONCURRENCY, SQL_ ATTR_CURSOR_TYPE, SQL_ ATTR_SIMULATE_CURSOR nebo SQL_ ATTR_USE_BOOKMARKS a prohlášení bylo připraveno. |
| HY013 | Chyba správy paměti | Volání funkce nelze zpracovat, protože základní objekty paměti nelze získat přístup, pravděpodobně kvůli nedostatku paměti. |
| HY017 | Neplatné použití automaticky alokovaného descriptorového handle | (DM) Argument atributu byl SQL_ATTR_IMP_ROW_DESC nebo SQL_ATTR_IMP_PARAM_DESC. (DM) Argument Attribute byl SQL_ATTR_APP_ROW_DESC nebo SQL_ATTR_APP_PARAM_DESC a hodnota v ValuePtr byla implicitně alokovaná descriptorová handle jiná než ta původně přidělená pro ARD nebo APD. |
| HY024 | Neplatná hodnota atributu | Při dané dané hodnotě atributu byla v ValuePtr zadána neplatná hodnota. (Driver Manager vrací tento stav SQL pouze pro atributy spojení a příkazů, které přijímají samostatnou množinu hodnot, například SQL_ATTR_ACCESS_MODE nebo SQL_ ATTR_ASYNC_ENABLE. Pro všechny ostatní atributy spojení a příkazů musí ovladač ověřit hodnotu zadanou v ValuePtr.) Argument Attribute byl SQL_ATTR_APP_ROW_DESC nebo SQL_ATTR_APP_PARAM_DESC a ValuePtr byl explicitně přidělený descriptor handle, který nebyl na stejném spojení jako argument StatementHandle . |
| HY090 | Neplatná délka řetězce nebo vyrovnávací paměti | (DM) *ValuePtr je řetězec znaků a argument StringLength byl menší než 0, ale nebyl SQL_NTS. |
| HY092 | Neplatný identifikátor atributu/opce | (DM) Hodnota určená pro argument Attribute nebyla platná pro verzi ODBC podporovanou ovladačem. (DM) Hodnota určená pro atribut argumentu byla pouze pro čtení. |
| HY117 | Připojení je pozastaveno kvůli neznámému stavu transakce. Jsou povoleny pouze funkce pro odpojení a jen pro čtení. | (DM) Další informace o pozastaveném stavu naleznete v tématu FUNKCE SQLEndTran. |
| HYC00 | Nepovinná funkce není implementována. | Hodnota určená pro argument Attribute byla platným atributem příkazu ODBC pro verzi ODBC podporovanou ovladačem, ale nepodporována samotným ovladačem. Argument Attribute byl SQL_ATTR_ASYNC_ENABLE a volání SQLGetInfo s InfoType of SQL_ASYNC_MODE vrací SQL_AM_CONNECTION. Argument atributu byl SQL_ATTR_ENABLE_AUTO_IPD a hodnota atributu spojení SQL_ATTR_AUTO_IPD byla SQL_FALSE. |
| HYT01 | Vypršel časový limit připojení | Platnost časového limitu připojení vypršela, než zdroj dat odpověděl na žádost. Časový limit připojení je nastavený prostřednictvím sqlSetConnectAttr SQL_ATTR_CONNECTION_TIMEOUT. |
| IM001 | Ovladač tuto funkci nepodporuje. | (DM) Ovladač přidružený k StatementHandle nepodporuje funkci. |
| S1118 | Ovladač nepodporuje asynchronní notifikace | Pokud voláte SQLSetStmtAttr pro nastavení SQL_ATTR_ASYNC_STMT_EVENT; Ovladač nepodporuje asynchronní notifikace. |
Comments
Atributy příkazů pro příkaz zůstávají v platnosti, dokud nejsou změněny jiným voláním do SQLSetStmtAttr nebo dokud příkaz není vyřazen voláním SQLFreeHandle. Volání SQLFreeStmt pomocí SQL_CLOSE, SQL_UNBIND nebo SQL_RESET_PARAMS možnosti neresetuje atributy příkazů.
Některé atributy příkazů podporují substituci podobné hodnoty, pokud zdroj dat nepodporuje hodnotu zadanou v ValuePtr. V takových případech ovladač vrací SQL_SUCCESS_WITH_INFO a SQLSTATE 01S02 (změna hodnoty volitele). Například pokud je Attribute SQL_ATTR_CONCURRENCY a ValuePtr SQL_CONCUR_ROWVER, a pokud zdroj dat to nepodporuje, ovladač SQL_CONCUR_VALUES nahradí a vrátí SQL_SUCCESS_WITH_INFO. Pro určení substituované hodnoty aplikace volá SQLGetStmtAttr.
Formát informační množiny s ValuePtr závisí na specifikovaném atributu. SQLSetStmtAttr přijímá informace o atributech ve dvou různých formátech: jako znakový řetězec nebo celočíselnou hodnotu. Formát každého je uveden v popisu atributu. Tento formát se vztahuje na informace vrácené pro každý atribut v SQLGetStmtAttr. Znakové řetězce označené argumentem ValuePtr v SQLSetStmtAttr mají délku StringLength.
Note
Možnost nastavit atributy příkazů na úrovni spojení voláním SQLSetConnectAttr byla v ODBC 3.x zrušena. Aplikace ODBC 3.x by nikdy neměly nastavovat atributy příkazů na úrovni připojení. Atributy příkazů ODBC 3.x nelze nastavit na úrovni spojení, s výjimkou atributů SQL_ATTR_METADATA_ID a SQL_ATTR_ASYNC_ENABLE, které jsou jak atributy spojení, tak příkazové atributy a lze je nastavit buď na úrovni spojení, nebo příkazu.
Note
Ovladače ODBC 3.x musí tuto funkci podporovat pouze tehdy, pokud mají fungovat s aplikacemi ODBC 2.x , které nastavují možnosti příkazů ODBC 2.x na úrovni připojení. Pro více informací viz "Nastavení příkazových možností na úrovni připojení" pod SQLSetConnectOption Mapping v příloze G: Pokyny pro zpětnou kompatibilitu ovladačů.
Atributy příkazů, které nastavují deskriptorová pole
Mnoho atributů příkazů odpovídá hlavičkovému poli deskriptoru. Nastavení těchto atributů ve skutečnosti vede k nastavení popisových polí. Nastavení polí voláním SQLSetStmtAttr místo SQLSetDescField má tu výhodu, že pro volání funkce není nutné získat handle deskriptoru.
Caution
Volání SQLSetStmtAttr pro jeden příkaz může ovlivnit i jiné příkazy. K tomu dochází, když je APD nebo ARD přiřazený k příkazu explicitně alokován a také spojen s jinými příkazy. Protože SQLSetStmtAttr modifikuje APD nebo ARD, úpravy se vztahují na všechny příkazy, se kterými je tento deskriptor spojen. Pokud toto chování není požadované, měla by aplikace tento deskriptor oddělit od ostatních příkazů (vyvolání SQLSetStmtAttr pro nastavení SQL_ATTR_APP_ROW_DESC nebo SQL_ATTR_APP_PARAM_DESC pole na jiný descriptor) před dalším zavoláním SQLSetStmtAttr .
Když je descriptorové pole nastaveno v důsledku nastavení odpovídajícího atributu příkazu, pole je nastaveno pouze pro příslušné deskriptory, které jsou aktuálně spojeny s tvrzením identifikovaným argumentem StatementHandle , a nastavení atributu neovlivňuje žádné deskriptory, které by mohly být s tímto tvrzením v budoucnu spojeny. Když je deskriptorové pole, které je zároveň atributem příkazu, nastaveno voláním SQLSetDescField, je nastaven odpovídající atribut příkazu. Pokud je explicitně přidělený deskriptor oddělen od příkazu, atribut příkazu odpovídající hlavičkovému poli se vrátí na hodnotu pole v implicitně alokovaném deskriptoru.
Když je příkaz alokován (viz SQLAllocHandle), čtyři popisovací handle jsou automaticky alokovány a přiřazeny k příkazu. Explicitně přidělené descriptorové handle lze s příkazem přiřadit vyvolání SQLAllocHandle pomocí fHandleType SQL_HANDLE_DESC pro přiřazení descriptorového handle a následným zavoláním SQLSetStmtAttr pro přiřazení descriptoru k příkazu.
Atributy příkazů v následující tabulce odpovídají polím hlaviček deskriptoru.
| Atribut příkazu | Pole záhlaví | Popis |
|---|---|---|
| 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 |
Atributy prohlášení
Aktuálně definované atributy a verze ODBC, ve které byly zavedeny, jsou uvedeny v následující tabulce; Očekává se, že ovladače budou definovány dalšími atributy, aby využily různé zdroje dat. ODBC vyrezervuje řadu atributů; vývojáři ovladačů si musí vyhradit hodnoty pro své vlastní použití specifické pro ovladače od Open Group. Další informace naleznete v tématu Driver-Specific datové typy, popisovače, typy informací, typy diagnostiky a atributy.
| Attribute | Obsah ValuePtr |
|---|---|
| SQL_ATTR_APP_PARAM_DESC (ODBC 3.0) | Handle APD pro následná volání SQLExecute a SQLExecDirect na příkazové rukojeti. Počáteční hodnota tohoto atributu je deskriptor implicitně alokovaný při počáteční alokaci příkazu. Pokud je hodnota tohoto atributu nastavena na SQL_NULL_DESC nebo na handle původně přidělený pro deskriptor, explicitně přidělený APD handle, který byl dříve přiřazen příkazovému handle, je od něj oddělen a příkazový handle se vrátí k implicitně přidělenému APD handle. Tento atribut nelze nastavit na deskriptorovou rukojeť, která byla implicitně přidělena pro jiný příkaz, ani na jinou deskriptorovou rukojeť, která byla implicitně nastavena na stejném příkazu; implicitně přidělené rukojeti deskriptorů nemohou být přiřazeny více než jednomu příkazu nebo rukojeti deskriptoru. |
| SQL_ATTR_APP_ROW_DESC (ODBC 3.0) | Handle do ARD pro následné načítání na handle výpisu. Počáteční hodnota tohoto atributu je deskriptor implicitně alokovaný při počáteční alokaci příkazu. Pokud je hodnota tohoto atributu nastavena na SQL_NULL_DESC nebo na handle původně přidělený pro deskriptor, explicitně přidělený ARD handle, který byl dříve spojen s příkazovým handlem, je od něj oddělen a příkazový handle se vrátí k implicitně alokovanému ARD handle. Tento atribut nelze nastavit na deskriptorovou rukojeť, která byla implicitně přidělena pro jiný příkaz, ani na jinou deskriptorovou rukojeť, která byla implicitně nastavena na stejném příkazu; implicitně přidělené rukojeti deskriptorů nemohou být přiřazeny více než jednomu příkazu nebo rukojeti deskriptoru. |
| SQL_ATTR_ASYNC_ENABLE (ODBC 1.0) | Hodnota SQLULEN, která určuje, zda je funkce volaná daným příkazem vykonána asynchronně: SQL_ASYNC_ENABLE_OFF = Vypnout asynchronní podporu na úrovni příkazů (výchozí). SQL_ASYNC_ENABLE_ON = Povolit asynchronní podporu na úrovni příkazů. Další informace naleznete v tématu Asynchronní spuštění (metoda dotazování). U ovladačů s podporou asynchronního provádění na úrovni příkazů je příkazový atribut SQL_ATTR_ASYNC_ENABLE pouze pro čtení. Jeho hodnota je stejná jako hodnota atributu na úrovni spojení se stejným názvem v době přidělení příkazové rukojeti. Volání SQLSetStmtAttr nastaví SQL_ATTR_ASYNC_ENABLE, kdy SQL_ASYNC_MODE InfoType vrátí SQL_AM_CONNECTION vrátí SQLSTATE HYC00 (Volitelná funkce není implementována). Pro více informací viz SQLSetConnectAttr Function . |
| SQL_ATTR_ASYNC_STMT_EVENT (ODBC 3.8) | Hodnota SQLPOINTER, která je handlem události. Oznámení o dokončení asynchronních funkcí je zapnuto voláním SQLSetStmtAttr , které nastaví atribut SQL_ATTR_ASYNC_STMT_EVENT a specifikuje handle události. |
| SQL_ATTR_ASYNC_STMT_PCALLBACK (ODBC 3.8) | SQLPOINTER k asynchronní callback funkciji. Pouze správce ovladačů může volat funkci SQLSetStmtAttr ovladače s tímto atributem. |
| SQL_ATTR_ASYNC_STMT_PCONTEXT (ODBC 3.8) | SQLPOINTER ke struktuře kontextu Pouze správce ovladačů může volat funkci SQLSetStmtAttr ovladače s tímto atributem. |
| SQL_ATTR_CONCURRENCY (ODBC 2.0) | Hodnota SQLULEN, která určuje souběžnost kurzoru: SQL_CONCUR_READ_ONLY = Kurzor je pouze pro čtení. Nejsou povoleny žádné aktualizace. SQL_CONCUR_LOCK = Kurzor používá nejnižší úroveň zamykání dostatečnou k tomu, aby řádek mohl být aktualizován. SQL_CONCUR_ROWVER = Kurzor používá optimistickou kontrolu souběžnosti, porovnává verze řádků jako SQLBase ROWID nebo Sybase TIMESTAMP. SQL_CONCUR_VALUES = Kurzor používá optimistickou kontrolu souběžnosti, porovnává hodnoty. Výchozí hodnota SQL_ATTR_CONCURRENCY je SQL_CONCUR_READ_ONLY. Tento atribut nelze pro otevřený kurzor specifikovat. Pro více informací viz Typy souběžnosti. Pokud je atribut SQL_ATTR_CURSOR_TYPE změněn na typ, který nepodporuje aktuální hodnotu SQL_ATTR_CONCURRENCY, hodnota SQL_ATTR_CONCURRENCY se při spuštění změní a při volání SQLExecDirect nebo SQLPrepare bude vydáno varování. Pokud ovladač podporuje příkaz SELECT FOR UPDATE a takový příkaz je vykonán při nastavení hodnoty SQL_ATTR_CONCURRENCY na SQL_CONCUR_READ_ONLY, bude vrácena chyba. Pokud je hodnota SQL_ATTR_CONCURRENCY změněna na hodnotu, kterou ovladač podporuje pro nějakou hodnotu SQL_ATTR_CURSOR_TYPE, ale ne pro aktuální hodnotu SQL_ATTR_CURSOR_TYPE, hodnota SQL_ATTR_CURSOR_TYPE se při vykonání změní a při volání SQLExecDirect nebo SQLPrepare je vydán SQLSTATE 01S02 (změna hodnoty volitelné hodnoty). Pokud specifikovaná souběžnost není zdrojem dat podporována, ovladač nahradí jinou souběžností a vrátí SQLSTATE 01S02 (změna hodnoty opce). Pro SQL_CONCUR_VALUES řidič nahrazuje SQL_CONCUR_ROWVER a naopak. Pro SQL_CONCUR_LOCK řidič nahrazuje v pořadí SQL_CONCUR_ROWVER nebo SQL_CONCUR_VALUES. Platnost nahrané hodnoty se nekontroluje až do doby vykonání. Pro více informací o vztahu mezi SQL_ATTR_CONCURRENCY a ostatními atributy kurzoru viz Charakteristiky kurzoru a typ kurzoru. |
| SQL_ATTR_CURSOR_SCROLLABLE (ODBC 3.0) | Hodnota SQLULEN, která určuje úroveň podpory, kterou aplikace vyžaduje. Nastavení tohoto atributu ovlivňuje následné volání SQLExecDirect a SQLExecute. SQL_NONSCROLLABLE = Na příkazové rukojeti příkazu nejsou potřeba posouvatelné kurzory. Pokud aplikace volá SQLFetchScroll na tomto handle, jedinou platnou hodnotou FetchOrientation je SQL_FETCH_NEXT. Toto je výchozí hodnota. SQL_SCROLLABLE = Na příkazovém rukojeti jsou vyžadovány posouvatelné kurzory. Při volání SQLFetchScroll může aplikace zadat libovolnou platnou hodnotu FetchOrientation, čímž dosáhne pozice kurzoru v jiných režimech než sekvenčním režimu. Pro více informací o posouvatelných kurzorech viz Posouvatelné kurzory. Pro více informací o vztahu mezi SQL_ATTR_CURSOR_SCROLLABLE a ostatními atributy kurzoru viz Charakteristiky kurzoru a typ kurzoru |
| SQL_ATTR_CURSOR_SENSITIVITY (ODBC 3.0) | Hodnota SQLULEN, která určuje, zda kurzory na příkazovém handle zpřístupňují změny provedené na výsledku nastaveném jiným kurzorem. Nastavení tohoto atributu ovlivňuje následné volání SQLExecDirect a SQLExecute. Aplikace může přečíst zpět hodnotu tohoto atributu, aby získala jeho počáteční stav nebo stav naposledy nastavený aplikací. SQL_UNSPECIFIED = Není specifikováno, jaký je typ kurzoru a zda kurzory na příkazovém rukojeti zobrazují změny provedené na výsledku nastaveném jiným kurzorem. Kurzory na popisovači příkazu můžou být viditelné žádné, některé nebo všechny takové změny. Toto je výchozí hodnota. SQL_INSENSITIVE = Všechny kurzory na příkazovém rukojeti ukazují výslednou množinu, aniž by odrážely jakékoli změny provedené jiným kurzorem. Necitlivé kurzory jsou pouze pro čtení. To odpovídá statickému kurzoru, který má souběžnost pouze pro čtení. SQL_SENSITIVE = Všechny kurzory na příkazové rukojeti zobrazují všechny změny provedené na výsledku nastaveném jiným kurzorem. Pro více informací o vztahu mezi SQL_ATTR_CURSOR_SENSITIVITY a ostatními atributy kurzoru viz Charakteristiky kurzoru a typ kurzoru. |
| SQL_ATTR_CURSOR_TYPE (ODBC 2.0) | Hodnota SQLULEN, která určuje typ kurzoru: SQL_CURSOR_FORWARD_ONLY = Kurzor se posouvá pouze dopředu. SQL_CURSOR_STATIC = Data v množině výsledků jsou statická. SQL_CURSOR_KEYSET_DRIVEN = Ovladač ukládá a používá klíče pro počet řádků uvedených v atributu SQL_ATTR_KEYSET_SIZE příkazu. SQL_CURSOR_DYNAMIC = Ovladač ukládá a používá pouze klíče pro řádky v sadě řádků. Výchozí hodnota je SQL_CURSOR_FORWARD_ONLY. Tento atribut nelze specifikovat po přípravě SQL příkazu. Pokud specifikovaný typ kurzoru není zdrojem dat podporován, ovladač nahrazuje jiný typ kurzoru a vrací SQLSTATE 01S02 (změna hodnoty volitelů). Místo smíšeného nebo dynamického kurzoru ovladač nahrazuje v pořadí kurzor ovládaný sadou kláves nebo statický kurzor. Za kurzor ovládaný sadou kláves ovladač nahrazuje statickým kurzorem. Pro více informací o typech posouvatelných kurzorů viz Typy posouvatelných kurzorů. Pro více informací o vztahu mezi SQL_ATTR_CURSOR_TYPE a ostatními atributy kurzoru viz Charakteristiky kurzoru a typ kurzoru. |
| SQL_ATTR_ENABLE_AUTO_IPD (ODBC 3.0) | Hodnota SQLULEN, která určuje, zda je provedeno automatické vypopulování IPD: SQL_TRUE = Automaticky zapíná populaci IPD po volání do SQLPrepare. SQL_FALSE = Vypne automatickou populaci IPD po volání SQLPrepare. (Aplikace může stále získat informace o polí IPD voláním SQLDescribeParam, pokud je podporováno.) Výchozí hodnota příkazového atributu SQL_ATTR_ENABLE_AUTO_IPD je SQL_FALSE. Pro více informací viz Automatická populace IPD. |
| SQL_ATTR_FETCH_BOOKMARK_PTR (ODBC 3.0) | SQLLEN *, který ukazuje na binární hodnotu záložek. Když je volán SQLFetchScroll s fFetchOrientation rovným SQL_FETCH_BOOKMARK, ovladač převezme hodnotu záložky z tohoto pole. Toto pole je výchozí jako nulový ukazatel. Pro více informací viz Scrolling by Bookmark. Hodnota označená tímto polem se nepoužívá pro operace mazání záložkou, aktualizaci záložkou nebo načtení pomocí záložek v SQLBulkOperations, které používají záložky uložené v bufferech řádků. |
| SQL_ATTR_IMP_PARAM_DESC (ODBC 3.0) | Rukojeť k IPD. Hodnota tohoto atributu je deskriptor přidělený při prvním přidělení příkazu. Aplikace tuto atribut nemůže nastavit. Tento atribut lze získat voláním SQLGetStmtAttr , ale nelze jej nastavit voláním SQLSetStmtAttr. |
| SQL_ATTR_IMP_ROW_DESC (ODBC 3.0) | Připojka k IRD. Hodnota tohoto atributu je deskriptor přidělený při prvním přidělení příkazu. Aplikace tuto atribut nemůže nastavit. Tento atribut lze získat voláním SQLGetStmtAttr , ale nelze jej nastavit voláním SQLSetStmtAttr. |
| SQL_ATTR_KEYSET_SIZE (ODBC 2.0) | SQLULEN, který specifikuje počet řádků v klíčové sadě pro kurzor řízený klíčovou sadou. Pokud je velikost klíčové sady 0 (výchozí), kurzor je plně řízen sadou kláves. Pokud je velikost klíčové sady větší než 0, kurzor se smísí (klíčová sada je řízena uvnitř klíčové sady a dynamická mimo klíčovou sadu). Výchozí velikost klíčové sady je 0. Pro více informací o kurzorech řízených sadou kláves viz Keyset-Driven Kurzory. Pokud zadaná velikost překročí maximální velikost klíčové sady, ovladač tuto velikost dosadí a vrátí SQLSTATE 01S02 (změna volby se změnila). SQLFetch nebo SQLFetchScroll vrací chybu, pokud je velikost klíčové sady větší než 0 nebo menší než velikost řádku. |
| SQL_ATTR_MAX_LENGTH (ODBC 1.0) | Hodnota SQLULEN, která určuje maximální množství dat, které ovladač vrací ze znaku nebo binárního sloupce. Pokud je ValuePtr kratší než délka dostupných dat, SQLFetch nebo SQLGetData data zkrátí a vrátí SQL_SUCCESS. Pokud je ValuePtr 0 (výchozí), ovladač se pokusí vrátit všechna dostupná data. Pokud je specifikovaná délka menší než minimální množství dat, které zdroj dat může vrátit, nebo větší než maximální množství dat, které zdroj dat může vrátit, ovladač tuto hodnotu nahradí a vrátí SQLSTATE 01S02 (změna hodnoty volitelných hodnot). Hodnota tohoto atributu může být nastavena na otevřeném kurzoru; nastavení však nemusí nastat účinnosti okamžitě, v takovém případě ovladač vrátí SQLSTATE 01S02 (změna hodnoty volitele) a atribut se vrátí na původní hodnotu. Tento atribut má za cíl snížit síťový provoz a měl by být podporován pouze tehdy, pokud jej může implementovat zdroj dat (na rozdíl od ovladače) v víceúrovňovém ovladači. Tento mechanismus by aplikace neměly používat k ořezávání dat; pro zkrácení přijatých dat by aplikace měla specifikovat maximální délku bufferu v argumentu BufferLength v SQLBindCol nebo SQLGetData. |
| SQL_ATTR_MAX_ROWS (ODBC 1.0) | Hodnota SQLULEN odpovídající maximálnímu počtu řádků, které je třeba aplikaci vrátit pro příkaz SELECT . Pokud je *ValuePtr rovno 0 (výchozí), ovladač vrátí všechny řádky. Tento atribut má za cíl snížit síťový provoz. Konceptuálně se aplikuje při vytvoření výsledné množiny a omezuje výslednou množinu na první řádky ValuePtr . Pokud je počet řádků ve výsledné množině větší než ValuePtr, výsledná množina se ořezává. SQL_ATTR_MAX_ROWS platí pro všechny sady výsledků v Příkazu, včetně těch, které vrací katalogové funkce. SQL_ATTR_MAX_ROWS stanovuje maximální hodnotu počtu řádků kurzoru. Ovladač by neměl emulovat chování SQL_ATTR_MAX_ROWS pro SQLFetch nebo SQLFetchScroll (pokud nelze implementovat omezení velikosti výsledkové sady na datovém zdroji), pokud nemůže zaručit, že SQL_ATTR_MAX_ROWS bude správně implementováno. Je definováno ovladačem, zda SQL_ATTR_MAX_ROWS platí i pro jiné příkazy než SELECT (například katalogové funkce). Hodnota tohoto atributu může být nastavena na otevřeném kurzoru; nastavení však nemusí nastat účinnosti okamžitě, v takovém případě ovladač vrátí SQLSTATE 01S02 (změna hodnoty volitele) a atribut se vrátí na původní hodnotu. |
| SQL_ATTR_METADATA_ID (ODBC 3.0) | Hodnota SQLULEN, která určuje, jak jsou argumenty řetězců katalogových funkcí zpracovávány. Pokud SQL_TRUE, argument řetězce katalogových funkcí je považován za identifikátory. Případ není významný. U nerozdělených řetězců driver odstraní všechny zadní mezery a řetězec se přeloží na velká písmena. U vymezených řetězců driver odstraní všechny vedoucí nebo zadní mezery a vezme doslovně to, co je mezi oddělovači. Pokud je jeden z těchto argumentů nastaven na nulový ukazatel, funkce vrátí SQL_ERROR a SQLSTATE HY009 (Neplatné použití nulového ukazatele). Pokud SQL_FALSE, argumenty řetězců katalogových funkcí nejsou považovány za identifikátory. Případ je významný. Mohou obsahovat vzor vyhledávání řetězců nebo neobsahovat, v závislosti na argumentu. Výchozí hodnota je SQL_FALSE. Argument TableTypev SQLTables, který přijímá seznam hodnot, není tímto atributem ovlivněn. SQL_ATTR_METADATA_ID lze také nastavit na úrovni připojení. (It a SQL_ATTR_ASYNC_ENABLE jsou jediné atributy příkazů, které jsou zároveň atributy spojení.) Další informace naleznete v tématu Argumenty funkce katalogu. |
| SQL_ATTR_NOSCAN (ODBC 1.0) | Hodnota SQLULEN, která určuje, zda by měl ovladač skenovat SQL řetězce na únikové sekvence: SQL_NOSCAN_OFF = Ovladač prohledává SQL řetězce na únikové sekvence (výchozí). SQL_NOSCAN_ON = Ovladač neprohledává SQL řetězce pro únikové sekvence. Místo toho ovladač odesílá příkaz přímo do datového zdroje. Pro více informací viz Escape Sequences in ODBC. |
| SQL_ATTR_PARAM_BIND_OFFSET_PTR (ODBC 3.0) | Hodnota SQLULEN *, která ukazuje na offset přidaný do ukazatelů pro změnu vazby dynamických parametrů. Pokud toto pole není null, ovladač dereferencuje ukazatel, přidá dereferencovanou hodnotu ke každému z odložených polí v descriptorovém záznamu (SQL_DESC_DATA_PTR, SQL_DESC_INDICATOR_PTR a SQL_DESC_OCTET_LENGTH_PTR) a při vázání použije nové hodnoty ukazatele. Ve výchozím nastavení je nastaven na null. Posuv vazby se vždy přidává přímo do polí SQL_DESC_DATA_PTR, SQL_DESC_INDICATOR_PTR a SQL_DESC_OCTET_LENGTH_PTR. Pokud je offset změněn na jinou hodnotu, nová hodnota se stále přidá přímo k hodnotě v deskriptorovém poli. Nový posun se nepřidává k hodnotě pole plus k žádným dřívějším posunem. Pro více informací viz Parametrové vazební offsety. Nastavením tohoto atributu příkazu se v hlavičce APD nastaví pole SQL_DESC_BIND_OFFSET_PTR. |
| SQL_ATTR_PARAM_BIND_TYPE (ODBC 3.0) | Hodnota SQLULEN, která označuje orientaci vazby pro dynamické parametry. Toto pole je nastaveno na SQL_PARAM_BIND_BY_COLUMN (výchozí) pro výběr vazby po sloupcích. Pro výběr řádkového vazby se toto pole nastaví na délku struktury nebo instance bufferu, který bude vázán na sadu dynamických parametrů. Tato délka musí obsahovat prostor pro všechny boundové parametry a jakékoli vyplňování struktury nebo bufferu, aby bylo zajištěno, že když se adresa boundu parametru zvýší o zadanou délku, výsledek ukáže na začátek stejného parametru v další sadě parametrů. Při použití operátoru sizeof v ANSI C je toto chování zaručené. Pro více informací viz Binding Arrays of Parameters. Nastavením tohoto atributu příkazu se v hlavičce APD nastaví pole SQL_DESC_ BIND_TYPE. |
| SQL_ATTR_PARAM_OPERATION_PTR (ODBC 3.0) | Hodnota SQLUSMALLINT *, která ukazuje na pole hodnot SQLUSMALLINT používaných k ignorování parametru během vykonání SQL příkazu. Každá hodnota je nastavena buď na SQL_PARAM_PROCEED (pro parametr, který má být vykonán) nebo SQL_PARAM_IGNORE (pro parametr, který má být ignorován). Sadu parametrů lze během zpracování ignorovat nastavením stavové hodnoty v poli, na které SQL_DESC_ARRAY_STATUS_PTR v APD ukazuje, na SQL_PARAM_IGNORE. Sada parametrů je zpracovávána, pokud je její stavová hodnota nastavena na SQL_PARAM_PROCEED nebo pokud nejsou nastaveny žádné prvky v poli. Tento atribut příkazu lze nastavit na nulový ukazatel, v takovém případě ovladač nevrací stavové hodnoty parametru. Tento atribut lze nastavit kdykoli, ale nová hodnota se použije až při dalším volání SQLExecDirect nebo SQLExecute . Tento atribut je ignorován, pokud neexistuje parametr bound. Pro více informací viz Použití polí parametrů. Nastavení tohoto atributu příkazu nastaví pole SQL_DESC_ARRAY_STATUS_PTR v hlavičce APD. |
| SQL_ATTR_PARAM_STATUS_PTR (ODBC 3.0) | Hodnota SQLUSMALLINT *, která ukazuje na pole hodnot SQLUSMALLINT obsahujících stavové informace pro každý řádek parametrů po volání do SQLExecute nebo SQLExecDirect. Toto pole je vyžadováno pouze tehdy, pokud je PARAMSET_SIZE větší než 1. Stavové hodnoty mohou obsahovat následující hodnoty: SQL_PARAM_SUCCESS: SQL příkaz byl úspěšně vykonán pro tuto sadu parametrů. SQL_PARAM_SUCCESS_WITH_INFO: SQL příkaz byl úspěšně vykonán pro tuto sadu parametrů; varovné informace jsou však dostupné v diagnostické datové struktuře. SQL_PARAM_ERROR: Při zpracování této sady parametrů došlo k chybě. Další informace o chybách jsou dostupné v diagnostické datové struktuře. SQL_PARAM_UNUSED: Tato sada parametrů nebyla použita, pravděpodobně proto, že nějaká předchozí sada parametrů způsobila chybu, která přerušila další zpracování, nebo protože SQL_PARAM_IGNORE byla nastavena pro danou sadu parametrů v poli specifikovaném SQL_ATTR_PARAM_OPERATION_PTR. SQL_PARAM_DIAG_UNAVAILABLE: Ovladač považuje pole parametrů za monolitickou jednotku, a proto negeneruje tuto úroveň chybových informací. Tento atribut příkazu lze nastavit na nulový ukazatel, v takovém případě ovladač nevrací stavové hodnoty parametru. Tento atribut lze nastavit kdykoli, ale nová hodnota se použije až při dalším volání SQLExecute nebo SQLExecDirect . Všimněte si, že nastavení tohoto atributu může ovlivnit chování výstupního parametru implementovaného ovladačem. Pro více informací viz Použití polí parametrů. Nastavení tohoto atributu příkazu nastaví pole SQL_DESC_ARRAY_STATUS_PTR v hlavičce IPD. |
| SQL_ATTR_PARAMS_PROCESSED_PTR (ODBC 3.0) | Pole záznamu SQLULEN *, které ukazuje na buffer, do něhož se vrací počet zpracovaných parametrů, včetně chybových sad. Pokud jde o nulový ukazatel, žádné číslo se nevrátí. Nastavením tohoto atributu příkazu se v hlavičce IPD nastaví pole SQL_DESC_ROWS_PROCESSED_PTR. Pokud volání SQLExecDirect nebo SQLExecute , které vyplňuje buffer odkazující tímto atributem, nevrátí SQL_SUCCESS ani SQL_SUCCESS_WITH_INFO, obsah bufferu není definován. Pro více informací viz Použití polí parametrů. |
| SQL_ATTR_PARAMSET_SIZE (ODBC 3.0) | Hodnota SQLULEN, která určuje počet hodnot pro každý parametr. Pokud je SQL_ATTR_PARAMSET_SIZE větší než 1, SQL_DESC_DATA_PTR, SQL_DESC_INDICATOR_PTR a SQL_DESC_OCTET_LENGTH_PTR APD ukazují na pole. Kardinálnost každého pole je rovna hodnotě tohoto pole. Tento atribut je ignorován, pokud neexistuje parametr bound. Pro více informací viz Použití polí parametrů. Nastavením tohoto atributu příkazu se pole SQL_DESC_ARRAY_SIZE v hlavičce APD nastaví. |
| SQL_ATTR_QUERY_TIMEOUT (ODBC 1.0) | Hodnota SQLULEN odpovídající počtu sekund čekajících na spuštění SQL příkazu před návratem do aplikace. Pokud je hodnota Ptr rovna 0 (výchozí), není časový limit (timeout). Pokud specifikovaný časový limit překročí maximální časový limit ve zdroji dat nebo je menší než minimální časový limit, SQLSetStmtAttr tuto hodnotu nahradí a vrátí SQLSTATE 01S02 (Option value změněna). Všimněte si, že aplikace nemusí volat SQLCloseCursor k opětovnému použití příkazu, pokud příkaz SELECT vypršel. Sada časového limitu dotazu v atributu tohoto příkazu je platná jak v synchronním, tak asynchronním režimu. |
| SQL_ATTR_RETRIEVE_DATA (ODBC 2.0) | Hodnota SQLULEN: SQL_RD_ON = SQLFetchScroll a v ODBC 3.xSQLFetch získávají data poté, co kurzor umístí na určené místo. Toto je výchozí hodnota. SQL_RD_OFF = SQLFetchScroll a v ODBC 3.xSQLFetch nezískávají data poté, co umístí kurzor. Nastavením SQL_RETRIEVE_DATA na SQL_RD_OFF může aplikace ověřit, že řádek existuje, nebo získat záložku pro tento řádek, aniž by musela nést náklady na načtení řádků. Pro více informací viz Scrolling and Fetching Rows. Hodnota tohoto atributu může být nastavena na otevřeném kurzoru; nastavení však nemusí nastat účinnosti okamžitě, v takovém případě ovladač vrátí SQLSTATE 01S02 (změna hodnoty volitele) a atribut se vrátí na původní hodnotu. |
| SQL_ATTR_ROW_ARRAY_SIZE (ODBC 3.0) | Hodnota SQLULEN, která určuje počet řádků vrácených každým voláním SQLFetch nebo SQLFetchScroll. Je to také počet řádků v poli záložek používaných při hromadné operaci záložek v SQLBulkOperations. Výchozí hodnota je 1. Pokud specifikovaná velikost řádků překročí maximální velikost řádků podporovanou datovým zdrojem, ovladač tuto hodnotu dosadí a vrátí SQLSTATE 01S02 (změna volby). Pro více informací viz Velikost řádku. Nastavení tohoto atributu příkazu nastaví pole SQL_DESC_ARRAY_SIZE v hlavičce ARD. |
| SQL_ATTR_ROW_BIND_OFFSET_PTR (ODBC 3.0) | Hodnota SQLULEN *, která ukazuje na posun přidaný do ukazatelů pro změnu vazby sloupcových dat. Pokud toto pole není null, ovladač dereferencuje ukazatel, přidá dereferencovanou hodnotu ke každému z odložených polí v descriptorovém záznamu (SQL_DESC_DATA_PTR, SQL_DESC_INDICATOR_PTR a SQL_DESC_OCTET_LENGTH_PTR) a při vázání použije nové hodnoty ukazatele. Ve výchozím nastavení je nastaven na null. Nastavením tohoto atributu příkazu se v hlavičce ARD nastaví pole SQL_DESC_BIND_OFFSET_PTR. |
| SQL_ATTR_ROW_BIND_TYPE (ODBC 1.0) | Hodnota SQLULEN, která nastavuje orientaci vazby pro použití při volání SQLFetch nebo SQLFetchScroll na příslušný příkaz. Vazba po sloupcích se vybírá nastavením hodnoty na SQL_BIND_BY_COLUMN. Řádkové přiřazení se volí nastavením hodnoty na délku struktury nebo instance bufferu, do kterého budou vázány výsledné sloupce. Pokud je určena délka, musí obsahovat místo pro všechny vázané sloupce a jakékoli vyplnění struktury nebo bufferu, aby bylo zajištěno, že když se adresa vázaného sloupce zvýší o zadanou délku, výsledek ukáže na začátek stejného sloupce v následujícím řádku. Při použití operátoru velikosti se strukturami nebo sjednoceními v ANSI C je toto chování zaručené. Přiřazení po sloupcích je výchozí orientace vazby pro SQLFetch a SQLFetchScroll. Pro více informací viz Binding Columns for Use with Block Cursors. Nastavení tohoto atributu příkazu nastaví pole SQL_DESC_BIND_TYPE v hlavičce ARD. |
| SQL_ATTR_ROW_NUMBER (ODBC 2.0) | Hodnota SQLULEN, která je číslem aktuálního řádku v celé sadě výsledků. Pokud nelze určit číslo aktuálního řádku nebo není aktuální řádek, ovladač vrátí 0. Tento atribut lze získat voláním SQLGetStmtAttr , ale nelze jej nastavit voláním SQLSetStmtAttr. |
| SQL_ATTR_ROW_OPERATION_PTR (ODBC 3.0) | Hodnota SQLUSMALLINT *, která ukazuje na pole hodnot SQLUSMALLINT používaných k ignorování řádku během hromadné operace pomocí SQLSetPos. Každá hodnota je nastavena buď na SQL_ROW_PROCEED (pro řádek, který má být zahrnut do hromadné operace), nebo na SQL_ROW_IGNORE (pro řádek, který má být vyloučen z hromadné operace). (Řádky nelze ignorovat použitím tohoto pole při volání do SQLBulkOperations.) Tento atribut příkazu lze nastavit na nulový ukazatel, v takovém případě ovladač nevrací stavové hodnoty řádku. Tento atribut lze nastavit kdykoli, ale nová hodnota se použije až při dalším volání SQLSetPos . Pro více informací viz Aktualizace řádků ve shodě řádků pomocí SQLSetPos a Mazání řádků ve sadě řádků pomocí SQLSetPos. Nastavení tohoto atributu příkazu nastaví pole SQL_DESC_ARRAY_STATUS_PTR v ARD. |
| SQL_ATTR_ROW_STATUS_PTR (ODBC 3.0) | Hodnota SQLUSMALLINT *, která po volání do SQLFetch nebo SQLFetchScroll ukazuje na pole hodnot SQLUSMALLINT obsahujících stavové hodnoty řádku. Pole má tolik prvků, kolik je řádků v sadě řádků. Tento atribut příkazu lze nastavit na nulový ukazatel, v takovém případě ovladač nevrací stavové hodnoty řádku. Tento atribut lze nastavit kdykoli, ale nová hodnota se použije až při dalším volání SQLBulkOperations, SQLFetch, SQLFetchScroll nebo SQLSetPos . Pro více informací viz Počet načítaných řádků a Stav. Nastavením tohoto atributu příkazu se v hlavičce IRD nastaví pole SQL_DESC_ARRAY_STATUS_PTR. Tento atribut je mapován ovladačem ODBC 2.x na pole rgbRowStatus v volání SQLExtendedFetch. |
| SQL_ATTR_ROWS_FETCHED_PTR (ODBC 3.0) | Hodnota SQLULEN *, která ukazuje na buffer, do kterého se vrací počet řádků načtených po volání SQLFetch nebo SQLFetchScroll; počet řádků ovlivněných hromadnou operací provedenou voláním SQLSetPos s argumentem operace SQL_REFRESH; nebo počet řádků ovlivněných hromadnou operací prováděnou SQLBulkOperations. Toto číslo zahrnuje chybové řádky. Pro více informací viz Počet načítaných řádků a Stav. Nastavení tohoto atributu příkazu nastaví pole SQL_DESC_ROWS_PROCESSED_PTR v hlavičce IRD. Pokud volání SQLFetch nebo SQLFetchScroll , které vyplní buffer označený tímto atributem, nevrátí SQL_SUCCESS ani SQL_SUCCESS_WITH_INFO, obsah bufferu není definován. |
| SQL_ATTR_SIMULATE_CURSOR (ODBC 2.0) | Hodnota SQLULEN, která určuje, zda ovladače simulující polohované příkazy update a delete zaručují, že takové příkazy ovlivňují pouze jeden jediný řádek. Pro simulaci polohovaných příkazů update a delete většina ovladačů vytváří vyhledávaný UPDATEDELETE nebo příkaz obsahující klauzuli WHERE , která určuje hodnotu každého sloupce v aktuálním řádku. Pokud tyto sloupce netvoří jedinečný klíč, může takové tvrzení ovlivnit více než jeden řádek. Aby bylo zajištěno, že taková tvrzení ovlivní pouze jeden řádek, ovladač určí sloupce v unikátním klíči a přidá tyto sloupce do výsledné množiny. Pokud aplikace zaručuje, že sloupce ve výsledné sadě tvoří jedinečný klíč, ovladač to nemusí dělat. To může zkrátit dobu provedení. SQL_SC_NON_UNIQUE = Ovladač nezaručuje, že simulované příkazy pro aktualizaci nebo odstranění polohy ovlivní pouze jeden řádek; Je to odpovědnost aplikace. Pokud příkaz ovlivní více než jeden řádek, SQLExecute, SQLExecDirect nebo SQLSetPos vrátí SQLSTATE 01001 (konflikt operací kurzoru). SQL_SC_TRY_UNIQUE = Ovladač se snaží zajistit, aby simulované polohované příkazy update nebo delete ovlivnily pouze jeden řádek. Ovladač tyto příkazy vždy spouští, i když můžou mít vliv na více než jeden řádek, například když neexistuje žádný jedinečný klíč. Pokud příkaz ovlivní více než jeden řádek, SQLExecute, SQLExecDirect nebo SQLSetPos vrátí SQLSTATE 01001 (konflikt operací kurzoru). SQL_SC_UNIQUE = Ovladač zaručuje, že simulované polohované příkazy update nebo delete ovlivní pouze jeden řádek. Pokud ovladač nemůže tuto záruku pro dané tvrzení zaručit, SQLExecDirect nebo SQLPrepare vrátí chybu. Pokud datový zdroj poskytuje nativní SQL podporu pro pozice update a delete příkazy a ovladač kurzory nesimuluje, SQL_SUCCESS se vrátí, když je SQL_SC_UNIQUE požádán o SQL_SIMULATE_CURSOR. SQL_SUCCESS_WITH_INFO se vrací, pokud je požadováno SQL_SC_TRY_UNIQUE nebo SQL_SC_NON_UNIQUE. Pokud zdroj dat poskytuje SQL_SC_TRY_UNIQUE úroveň podpory a ovladač ne, SQL_SUCCESS se vrátí pro SQL_SC_TRY_UNIQUE a SQL_SUCCESS_WITH_INFO pro SQL_SC_NON_UNIQUE. Pokud specifikovaný typ simulace kurzoru není zdrojem dat podporován, ovladač nahradí jiný typ simulace a vrátí SQLSTATE 01S02 (změna hodnoty volitelů). Pro SQL_SC_UNIQUE řidič nahrazuje v pořadí SQL_SC_TRY_UNIQUE nebo SQL_SC_NON_UNIQUE. Za SQL_SC_TRY_UNIQUE řidič nahrazuje SQL_SC_NON_UNIQUE. Výchozí je SQL_SC_UNIQUE. Pro více informací viz Simulace příkazů Aktualizace a Mazání polohy. |
| SQL_ATTR_USE_BOOKMARKS (ODBC 2.0) | Hodnota SQLULEN, která určuje, zda aplikace použije záložky s kurzorem: SQL_UB_OFF = Vypnuto (výchozí) SQL_UB_VARIABLE = Aplikace použije záložky s kurzorem a ovladač poskytne záložky s proměnnou délkou, pokud jsou podporovány. SQL_UB_FIXED je v ODBC 3.x zastaralý. Aplikace ODBC 3.x by měly vždy používat záložky s proměnnou délkou, i při práci s ovladači ODBC 2.x (které podporovaly pouze 4bajtové záložky pevné délky). Je to proto, že záložka s pevnou délkou je jen speciálním případem záložky s proměnnou délkou. Při práci s ovladačem ODBC 2.x Driver Manager mapuje SQL_UB_VARIABLE na SQL_UB_FIXED. Pro použití záložek s kurzorem musí aplikace zadat tento atribut s hodnotou SQL_UB_VARIABLE před otevřením kurzoru. Pro více informací viz Vyhledávání záložek. |
[1] Tyto funkce lze volat asynchronně pouze tehdy, pokud je deskriptor implementační, nikoli aplikační.
Viz Column-Wise Binding a Row-Wise Binding.
Související funkce
| Informace o | Podívejte se |
|---|---|
| Zrušení zpracování příkazů | SQLCancel – funkce |
| Vrácení nastavení atributu připojení | FUNKCE SQLGetConnectAttr |
| Vrácení nastavení atributu příkazu | FUNKCE SQLGetStmtAttr |
| Nastavení atributu spojení | SQLSetConnectAttr – funkce |
| Nastavení jednoho pole deskriptoru | SQLSetDescField Function |