Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
A hossz-/mutatópuffer az adatpufferben lévő adatok bájthosszának átadására szolgál, vagy egy speciális mutató, például SQL_NULL_DATA, amely azt jelzi, hogy az adatok NULL értékűek. Attól függően, hogy melyik függvényben használják, a hossz/mutató puffere SQLINTEGER vagy SQLSMALLINT. Ezért egyetlen argumentumra van szükség a leírásához. Ha az adatpuffer nem késleltetett bemeneti puffer, akkor ez az argumentum magában az adatban szereplő bájthosszt vagy egy mutatóértéket tartalmazza. Ezt gyakran StrLen_or_Ind vagy hasonló néven nevezik el. Az alábbi kód például meghívja az SQLPutData-ot egy adatokkal teli puffer átadására; a bájthossz (ValueLen) közvetlenül lesz átadva, mert az adatpuffer (ValuePtr) egy bemeneti puffer.
SQLCHAR ValuePtr[50];
SQLINTEGER ValueLen;
// Call local function to place data in ValuePtr. In ValueLen, return the
// number of bytes of data placed in ValuePtr. If there is not enough
// data, this will be less than 50.
FillBuffer(ValuePtr, sizeof(ValuePtr), &ValueLen);
// Call SQLPutData to send the data to the driver.
SQLPutData(hstmt, ValuePtr, ValueLen);
Ha az adatpuffer halasztott bemeneti puffer, nem késleltetett kimeneti puffer vagy kimeneti puffer, az argumentum tartalmazza a hossz-/mutatópuffer címét. Ezt gyakran StrLen_or_IndPtr vagy hasonló néven nevezik el. Az alábbi kód például meghívja az SQLGetData-t egy adatokkal teli puffer lekérésére; a bájthossz a hossz/mutató pufferben (ValueLenOrInd) lesz visszaadva az alkalmazásnak, amelynek a címe az SQLGetData-nak van átadva, mert a megfelelő adatpuffer (ValuePtr) egy nem késleltetett kimeneti puffer.
SQLCHAR ValuePtr[50];
SQLINTEGER ValueLenOrInd;
SQLGetData(hstmt, 1, SQL_C_CHAR, ValuePtr, sizeof(ValuePtr), &ValueLenOrInd);
Ha nem kifejezetten tiltott, a hossz/mutató puffer argumentuma lehet 0 (ha nem késleltetett bemenet) vagy null mutató (ha kimenet vagy halasztott bemenet). Bemeneti pufferek esetén az illesztőprogram figyelmen kívül hagyja az adatok bájthosszát. Ez hibát ad vissza a változó hosszúságú adatok átadásakor, de gyakori a nem null értékű, rögzített hosszúságú adatok átadásakor, mivel sem hosszra, sem mutatóértékre nincs szükség. Kimeneti pufferek esetén ez azt eredményezi, hogy az illesztő nem adja vissza az adatok bájthosszát vagy egy mutatóértéket. Ez hiba, ha az illesztő által visszaadott adatok NULL értékűek, de gyakoriak a rögzített hosszúságú, nem null értékű adatok beolvasásakor, mivel sem hosszra, sem mutatóértékre nincs szükség.
Amikor a késleltetett adatpuffer címét átadják az illesztőprogramnak, a késleltetett hossz/mutató puffer címének is érvényesnek kell maradnia, amíg a puffer ki nincs bontva.
A következő hosszok hossz-/mutatóértékként érvényesek:
n, ahol n> 0.
-
SQL_NTS. A megfelelő adatpufferben az illesztőprogramnak küldött sztring null értékű; ez egy kényelmes módja annak, hogy a C programozók sztringeket adjanak át anélkül, hogy ki kellene számítaniuk a bájthosszukat. Ez az érték csak akkor legális, ha az alkalmazás adatokat küld az illesztőprogramnak. Amikor az illesztőprogram adatokat ad vissza az alkalmazásnak, mindig az adatok tényleges bájthosszát adja vissza.
A következő értékek hossz-/mutatóértékként érvényesek. SQL_NULL_DATA a SQL_DESC_INDICATOR_PTR leírótér mezőjében van tárolva; az összes többi érték a SQL_DESC_OCTET_LENGTH_PTR leírótér mezőjében van tárolva.
SQL_NULL_DATA. Az adatok null értékűek, és a megfelelő adatpufferben lévő érték figyelmen kívül lesz hagyva. Ez az érték csak az illesztőprogramnak küldött vagy onnan lekért SQL-adatok esetében legális.
SQL_DATA_AT_EXEC. Az adatpuffer nem tartalmaz adatokat. Ehelyett a rendszer az SQLPutData használatával küldi el az adatokat az utasítás végrehajtásakor, illetve az SQLBulkOperations vagy az SQLSetPos meghívásakor. Ez az érték csak az illesztőprogramnak küldött SQL-adatok esetében legális. További információ: SQLBindParameter, SQLBulkOperations és SQLSetPos.
A SQL_LEN_DATA_AT_EXEC(hossz) makró eredménye. Ez az érték hasonló az SQL_DATA_AT_EXEC-hez. További információ: Hosszú adatok küldése.
SQL_NO_TOTAL. Az illesztő nem tudja meghatározni a kimeneti pufferben még mindig elérhető hosszú adatok bájtjainak számát. Ez az érték csak az illesztőprogramból lekért SQL-adatok esetében legális.
SQL_DEFAULT_PARAM. Az eljárás egy bemeneti paraméter alapértelmezett értékét használja egy eljárásban a megfelelő adatpuffer értéke helyett.
SQL_COLUMN_IGNORE. Az SQLBulkOperations vagy az SQLSetPos az adatpufferben lévő érték figyelmen kívül hagyása. Ha az SQLBulkOperations vagy az SQLSetPos hívásával frissít egy adatsort, az oszlop értéke nem változik. Amikor új adatsort szúr be az SQLBulkOperations hívásával, az oszlop értéke az alapértelmezett érték, vagy ha az oszlop nem rendelkezik alapértelmezett értékkel, akkor NULL értékre.