SQLSetEnvAttr függvény

Megfelelőség
Bemutatott verzió: ODBC 3.0 szabványoknak megfelelés: ISO 92

Summary
SQLSetEnvAttr attribútumokat állít be, amelyek a környezetek aspektusait szabályozzák.

Syntax

  
SQLRETURN SQLSetEnvAttr(  
     SQLHENV      EnvironmentHandle,  
     SQLINTEGER   Attribute,  
     SQLPOINTER   ValuePtr,  
     SQLINTEGER   StringLength);  

Arguments

EnvironmentHandle
[Bemenet] Környezet kezelése.

Attribútum
[Bemenet] Attribútumot a készlethez, felsorolva a "Hozzászólások" részén.

ValuePtr
[Bemenet] Mutató az értékre, amelyet az attribútumhoz kell társítani. Az attribútum értékétől függően a ValuePtr egy 32 bites egész érték lesz, vagy egy nullvéges karakterláncra mutató mutató.

StringLength
[Bemenet] Ha a ValuePtr egy karakterláncra vagy bináris pufferre mutat, ennek az argumentumnak a *ValuePtr hosszának kell lennie. Karakterlánc adatok esetén ennek az argumentumnak tartalmaznia kell a sztróban lévő bájtok számát.

Ha a ValuePtr egész szám, akkor a StringLength-et figyelmen kívül hagyjuk.

Returns

SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR vagy SQL_INVALID_HANDLE.

Diagnostics

Amikor az SQLSetEnvAttr SQL_ERROR vagy SQL_SUCCESS_WITH_INFO értéket ad vissza, egy hozzárendelt SQLSTATE értéket lehet megszerezni SQLGetDiagRec hívásával, amely egy SQL_HANDLE_ENV HandleType és egy EnvironmentHandle Handle nevű Handle-jével. Az alábbi táblázat felsorolja az SQLSetEnvAttr által általában visszaadott SQLSTATE értékeket, és mindegyiket elmagyarázza ezen függvény kontextusában; a "(DM)" jelölés megelőzi a Driver Manager által visszaadott SQLSTATE-leírásokat. Az egyes SQLSTATE-értékekhez társított visszatérési kód SQL_ERROR, kivéve, ha másként van feltüntetve. Ha egy illesztőprogram nem támogatja a környezeti attribútumot, a hiba csak a csatlakozási idő alatt tér vissza.

SQLSTATE Hiba Description
01000 Általános figyelmeztetés Illesztőprogram-specifikus tájékoztató üzenet. (A függvény SQL_SUCCESS_WITH_INFO ad vissza.)
01S02 A beállítás értéke módosult Az illesztőprogram nem támogatta az ValuePtr-ben megadott értéket, és hasonló értéket cserélt. (A függvény SQL_SUCCESS_WITH_INFO ad vissza.)
HY000 Általános hiba Hiba történt, amely miatt nem volt konkrét SQLSTATE, és amelyhez nem definiáltak implementációspecifikus SQLSTATE-t. Az SQLGetDiagRec által a *MessageText pufferben visszaadott hibaüzenet leírja a hibát és annak okát.
HY001 Memóriafoglalási hiba Az illesztőprogram nem tudta lefoglalni a függvény végrehajtásának vagy befejezésének támogatásához szükséges memóriát.
HY009 Érvénytelen null mutató használata Az Attribútumok érve egy környezeti attribútumot azonosított, amely string értéket igényelt, míg a ValuePtr érve null mutató volt.
HY010 Függvényütemezési hiba (DM) A EnvironmentHandle egy kapcsolati handle lett kijelölve.

(DM) SQL_ATTR_ODBC_VERSION nem volt beállítva SQLSetEnvAttr-rel , és az attribútum nem egyenlő SQL_ATTR_ODBC_VERSION-vel. Nem kell SQL_ATTR_ODBC_VERSION kifejezetten beállítani, ha SQLAllocHandleStd-t használsz.
HY013 Memóriakezelési hiba A függvényhívás nem dolgozható fel, mert a mögöttes memóriaobjektumok nem érhetők el, esetleg a memóriahiány miatt.
HY024 Érvénytelen attribútumérték A megadott attribútumérték megadása esetén a ValuePtr érték egy érvénytelen értéket is megadott.
HY090 Érvénytelen sztring vagy puffer hossza A StringLength érv kevesebb volt, mint 0, de nem volt SQL_NTS.
HY092 Érvénytelen attribútum/opcióazonosító (DM) Az Attribútum argumentumhoz megadott érték nem volt érvényes az illesztőprogram által támogatott ODBC verzióra.
HY117 A kapcsolat ismeretlen tranzakciós állapot miatt fel van függesztve. Csak a leválasztási és írásvédett függvények engedélyezettek. (DM) A felfüggesztett állapotról további információt az SQLEndTran függvényben talál.
HYC00 A választható funkció nem implementálva Az Attribútum argumentumhoz megadott érték érvényes ODBC környezeti attribútumot adott az illesztőprogram által támogatott ODBC verzióhoz, de az illesztőprogram nem támogatta.

(DM) Az attribútum érv SQL_ATTR_OUTPUT_NTS, a ValuePtr pedig SQL_FALSE.

Comments

Egy alkalmazás csak akkor hívhatja az SQLSetEnvAttr-t , ha nincs csatlakoztatva a környezeten. Az alkalmazás által sikeresen beállított környezeti attribútumok fennmaradnak, amíg az SQLFreeHandle meg nem hívja a környezetet. Az ODBC 3.x-ben egyszerre több környezeti handle is kiosztható.

A ValuePtr által állított információ formátuma a megadott attribútumtól függ. Az SQLSetEnvAttr két különböző formátumban fogadja az attribútum-információkat: nullvéges karakterlánc vagy 32 bites egész érték. Mindegyik formátuma az attribútum leírásában szerepel.

Nincsenek illesztőgép-specifikus környezeti attribútumok.

A kapcsolati attribútumokat nem lehet beállítani SQLSetEnvAttr hívással. Ha ezt megpróbálod, az SQLSTATE HY092 (Invalid attribútum/opcióazonosító) jelenik meg.

Attribútum ValuePtr tartalma
SQL_ATTR_CONNECTION_POOLING (ODBC 3.8) Egy 32 bites SQLUINTEGER érték, amely lehetővé teszi vagy tiltja a kapcsolati poolingot a környezeti szinten. A következő értékek kerülnek felhasználásra:

SQL_CP_OFF = A kapcsolati csoportosítás ki van kapcsolva. Ez az alapértelmezett beállítás.

SQL_CP_ONE_PER_DRIVER = Minden illesztőprogramhoz egyetlen csatlakozási pool támogatott. Minden kapcsolat egy csoportban egy driverhez van kötve.

SQL_CP_ONE_PER_HENV = Minden környezethez egyetlen kapcsolati pool támogatott. Minden kapcsolat egy medencében egy környezethez kapcsolódik.

SQL_CP_DRIVER_AWARE = Használja a driver-pool tudatosság funkcióját, ha elérhető. Ha az illesztőprogram nem támogatja a kapcsolati pool tudatosságot, SQL_CP_DRIVER_AWARE figyelmen kívül hagyják, és SQL_CP_ONE_PER_HENV használják. További információ: Driver-Aware kapcsolatkészletezés. Olyan környezetben, ahol egyes illesztőprogramok támogatják, mások nem, SQL_CP_DRIVER_AWARE engedélyezhetik a kapcsolat-pool tudatosságot azoknál, amelyek támogatják a vezetőket, de ez egyenértékű, mint SQL_CP_ONE_PER_HENV azokon az illesztőautókban, amelyek nem támogatják a kapcsolat-pool tudatosság funkcióját.

A kapcsolat pooling lehetővé teszi, ha az SQLSetEnvAttr hívása a SQL_ATTR_CONNECTION_POOLING attribútumot SQL_CP_ONE_PER_DRIVER vagy SQL_CP_ONE_PER_HENV-re állítja be. Ezt a hívást azelőtt kell kezdeményezni, hogy az alkalmazás lefoglalja azt a megosztott környezetet, amelyhez engedélyezni kell a kapcsolatkészletezést. Az SQLSetEnvAttr hívásában a környezeti handle nullra van állítva, ami SQL_ATTR_CONNECTION_POOLING folyamatszintű attribútumot eredményez. Miután a kapcsolat bilekezés engedélyezett, az alkalmazás egy implicit megosztott környezetet rendel el azzal, hogy az SQLAllocHandle-t hívja az InputHandle argumentummal SQL_HANDLE_ENV-re.

Miután a kapcsolat pooling engedélyezett és egy alkalmazáshoz megosztott környezetet választottak, SQL_ATTR_CONNECTION_POOLING nem lehet visszaállítani abban a környezetben, mert az SQLSetEnvAttr-t null környezeti handle-rel hívják meg az attribútumok beállításakor. Ha ez az attribútumot akkor állítják be, amikor a kapcsolat pooling már engedélyezett egy megosztott környezeten, akkor az attribútum csak azokat a megosztott környezeteket érinti, amelyeket később kijelölnek.

Lehetséges a kapcsolat poolingolás engedélyezése is egy környezeten. Figyeld meg a környezeti kapcsolati poolingolásról szóló alábbikat:

- A kapcsolat pooling engedélyezése egy NULL handle alatt egy folyamatszintű attribútum. Ezt követően a kijelölt környezetek megosztott környezetet alkotnak, és átveszik a folyamatszintű kapcsolati pooling beállítást.
- Miután egy környezetet kiosztottak, az alkalmazás továbbra is megváltoztathatja a kapcsolati pool beállításait.
- Ha a környezeti kapcsolati pooling engedélyezve van, és a kapcsolat illesztőprogramja illesztőprogramot használ, akkor a környezet pooling előnyben részesíti.

SQL_ATTR_CONNECTION_POOLING a Driver Managerben van megvalósítva. Egy illesztőprogramnak nem kell SQL_ATTR_CONNECTION_POOLING implementálnia. Az ODBC 2.0 és 3.0 alkalmazások beállíthatják ezt a környezeti attribútumot.

További információ: ODBC-kapcsolatkészletezés.
SQL_ATTR_CP_MATCH (ODBC 3.0) Egy 32 bites SQLUINTEGER érték, amely meghatározza, hogyan választanak kapcsolatot a kapcsolati poolból. Amikor az SQLConnect vagy SQLDriverConnect hívást hívják, a Driver Manager meghatározza, melyik kapcsolatot használják újra a poolból. A Driver Manager megpróbálja összeilleszteni a hívásban szereplő kapcsolati opciókat és az alkalmazás által beállított kapcsolati attribútumokat a pool kulcsszavaihoz és kapcsolati attribútumaihoz. Ennek az attribútumnak az értéke határozza meg a párosítási kritériumok pontosságának szintjét.

Az alábbi értékeket használják ennek az attribútumnak az értékének beállításához:

SQL_CP_STRICT_MATCH = Csak azokat a kapcsolatokat használják újra, amelyek pontosan megfelelnek a hívásban megadott kapcsolati opcióknak és az alkalmazás által beállított kapcsolati attribútumoknak. Ez az alapértelmezett beállítás.

SQL_CP_RELAXED_MATCH = Használható olyan kapcsolatok, amelyek kapcsolati karakterlánc kulcsszavakkal egyeznek. A kulcsszavaknak egyezniük kell, de nem minden kapcsolati tulajdonságnak kell egyeznie.

További információért arról, hogyan végzi a Driver Manager a párosítást egy pooled kapcsolathoz való csatlakozásnál, lásd: SQLConnect. A kapcsolatkészletezéssel kapcsolatos további információkért lásd az ODBC-kapcsolatkészletezést.
SQL_ATTR_ODBC_VERSION (ODBC 3.0) Egy 32 bites egész szám, amely meghatározza, hogy bizonyos funkciók ODBC 2.x vagy ODBC 3.x viselkedést mutatnak-e. Az alábbi értékeket használják ennek az attribútumnak az értékének beállításához:

SQL_OV_ODBC3_80 = A Driver Manager és az illezőgép a következő ODBC 3.8 viselkedést mutatják:

- Az illesztőprogram visszaadja és elvárja az ODBC 3.x kódokat a dátum, idő és időbélyeg számára.
- Az illesztőprogram ODBC 3.x SQLSTATE kódokat ad vissza, amikor SQLError, SQLGetDiagField vagy SQLGetDiagRec hívást kap.
- A CatalogName argumentum egy SQLTables hívásban elfogad egy keresési mintát.
- A Driver Manager támogatja a C adattípus bővíthetőségét. További információért a C adattípus bővíthetőségéről lásd: C adattípusok az ODBC-ben.

További információért lásd: Mi újság az ODBC 3.8-ban.

SQL_OV_ODBC3 = A Driver Manager és az illezőprogram a következő ODBC 3.x viselkedést mutatják:

- Az illesztőprogram visszaadja és elvárja az ODBC 3.x kódokat a dátum, idő és időbélyeg számára.
- Az illesztőprogram ODBC 3.x SQLSTATE kódokat ad vissza, amikor SQLError, SQLGetDiagField vagy SQLGetDiagRec hívást kap.
- A CatalogName argumentum egy SQLTables hívásban elfogad egy keresési mintát.
- A Driver Manager nem támogatja a C adattípus bővíthetőségét.

SQL_OV_ODBC2 = A Driver Manager és az illesztőprogram a következő ODBC 2.x viselkedést mutat. Ez különösen hasznos egy ODBC 2.x alkalmazásnál, amely ODBC 3.x illezőgéppel dolgozik.

- Az illesztőprogram visszaadja és elvárja az ODBC 2.x kódokat a dátum, idő és időbélyeg számára.
- Az illesztőprogram ODBC 2.x SQLSTATE kódokat ad vissza, amikor SQLError, SQLGetDiagField vagy SQLGetDiagRec hívást kap.
- A CatalogName argumentum egy SQLTables hívásban nem fogad el keresési mintát.
- A Driver Manager nem támogatja a C adattípus bővíthetőségét.

Az alkalmazásnak be kell állítania ezt a környezeti attribútumot, mielőtt bármilyen függvényt hívna, amelynek SQLHENV argumentum van, különben a hívás visszaadja az SQLSTATE HY010-et (Függvénysorozat hiba). A vezetőtől függ, hogy ezek a környezeti zászlók esetén van-e további viselkedés.

- További információért lásd: Az alkalmazás ODBC verziójának deklarálása és viselkedési változások.
SQL_ATTR_OUTPUT_NTS (ODBC 3.0) Egy 32 bites egész szám, amely meghatározza, hogyan ad vissza a meghajtó a string adatokat. Ha SQL_TRUE, az illesztőprogram null-terminált, a string adatot adja vissza. Ha SQL_FALSE, az illesztőprogram nem adja vissza null lezárt string-adatokat.

Ez az attribútum alapértelmezettként SQL_TRUE. Egy hívás az SQLSetEnvAttr-hez , hogy SQL_TRUE-re állítsd SQL_SUCCESS-et. Az SQLSetEnvAttr-hez való hívás SQL_FALSE-ra állítva SQL_ERROR-et és SQLSTATE HYC00-et ad vissza (opcionális funkció nem implementálódott).
Információ erről: Nézze
Kiosztás egy fogantyú SQLAllocHandle függvény
Környezeti attribútum beállításának visszaállítása SQLGetEnvAttr Function