Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Konformität
Eingeführte Version: ODBC 3.0 Normenkonformität: ISO 92
Summary
SQLGetStmtAttr gibt die aktuelle Einstellung eines Anweisungsattributs zurück.
Note
Für weitere Informationen darüber, worauf der Driver Manager diese Funktion bei einer ODBC 3 zuweist. x-Anwendung arbeitet mit einem ODBC 2. x-Treiber , siehe Mapping Replacement Functions für Abwärtskompatibilität von Anwendungen.
Syntax
SQLRETURN SQLGetStmtAttr(
SQLHSTMT StatementHandle,
SQLINTEGER Attribute,
SQLPOINTER ValuePtr,
SQLINTEGER BufferLength,
SQLINTEGER * StringLengthPtr);
Argumente
StatementHandle
[Eingabe] Anweisungshandle.
Attribut
[Eingabe] Attribut zum Abrufen.
ValuePtr
[Ausgabe] Zeiger auf einen Puffer, in dem der Wert des in Attribut angegebenen Attributs zurückgegeben wird.
Wenn ValuePtr NULL ist, gibt StringLengthPtr weiterhin die Gesamtzahl der Bytes zurück (ohne das Null-Terminationszeichen für Zeichendaten), die im von ValuePtr gezeigten Puffer zurückgegeben werden können.
BufferLength
[Eingabe] Wenn attribut ein ODBC-definiertes Attribut ist und ValuePtr auf eine Zeichenfolge oder einen binären Puffer zeigt, sollte dieses Argument die Länge von *ValuePtr sein. Wenn Attribute ein ODBC-definiertes Attribut ist und *ValuePtr eine ganze Zahl, wird BufferLength ignoriert. Wenn der in *ValuePtr zurückgegebene Wert eine Unicode-Zeichenkette ist (beim Aufruf von SQLGetStmtAttrW), muss das BufferLength-Argument eine gerade Zahl sein.
Wenn Attribute ein treiberdefiniertes Attribut ist, teilt die Anwendung die Natur des Attributs dem Driver Manager an, indem sie das BufferLength-Argument setzt. BufferLength kann folgende Werte haben:
Wenn *ValuePtr ein Zeiger auf eine Zeichenfolge ist, dann ist BufferLength die Länge der Zeichenkette oder SQL_NTS.
Wenn *ValuePtr ein Zeiger auf einen binären Puffer ist, platziert die Anwendung das Ergebnis des Makros SQL_LEN_BINARY_ATTR(Länge) in BufferLength. Dies setzt einen negativen Wert in BufferLength.
Wenn *ValuePtr ein Zeiger auf einen anderen Wert als eine Zeichenkette oder binäre Zeichenkette ist, sollte BufferLength den Wert SQL_IS_POINTER haben.
Wenn *ValuePtr einen Datentyp mit fester Länge enthält, dann ist BufferLength entweder SQL_IS_INTEGER oder SQL_IS_UINTEGER, je nach Anwendung.
StringLengthPtr
[Ausgabe] Ein Zeiger auf einen Puffer, in dem die Gesamtzahl der Bytes (ohne das Null-Terminationszeichen) zurückgegeben werden kann, die in *ValuePtr zurückgegeben werden können. Wenn der Attributwert eine Zeichenfolge ist und die Anzahl der verfügbaren Bytes größer oder gleich BufferLength ist, werden die Daten in *ValuePtr auf BufferLength minus die Länge eines Null-Terminations-Zeichens gekürzt und vom Treiber null-terminiert.
Rücklieferungen
SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR oder SQL_INVALID_HANDLE.
Diagnostics
Wenn SQLGetStmtAttr SQL_ERROR oder SQL_SUCCESS_WITH_INFO zurückgibt, kann ein zugehöriger SQLSTATE-Wert erhalten werden, indem SQLGetDiagRec mit einem HandleType von SQL_HANDLE_STMT und einem Handle von StatementHandle aufgerufen wird. Die folgende Tabelle listet die SQLSTATE-Werte auf, die häufig von SQLGetStmtAttr zurückgegeben werden, und erklärt jeden einzelnen im Kontext dieser Funktion; die Notation "(DM)" geht den vom Treibermanager zurückgegebenen SQLSTATE-Beschreibungen voraus. Der rückgabecode, der jedem SQLSTATE-Wert zugeordnet ist, ist SQL_ERROR, sofern nicht anders angegeben.
| SQLSTATE | Fehler | Description |
|---|---|---|
| 01000 | Allgemeiner Warnhinweis | Treiberspezifische Informationsmeldung. (Funktion gibt SQL_SUCCESS_WITH_INFO zurück.) |
| 01004 | Zeichenfolgendaten, rechts abgeschnitten | Die in *ValuePtr zurückgegebenen Daten wurden auf BufferLength minus die Länge eines Null-Terminationszeichens abgeschnitten. Die Länge des untrunkierten Stringwerts wird in *StringLengthPTR zurückgegeben. (Funktion gibt SQL_SUCCESS_WITH_INFO zurück.) |
| 24000 | Ungültiger Cursorstatus | Das Argument Attribut war SQL_ATTR_ROW_NUMBER und der Cursor war nicht offen, oder der Cursor wurde vor Beginn der Ergebnismenge oder nach dem Ende der Ergebnismenge positioniert. |
| HY000 | Allgemeiner Fehler | Es ist ein Fehler aufgetreten, für den kein spezifischer SQLSTATE-Wert vorhanden war und für den keine implementierungsspezifische SQLSTATE definiert wurde. Die von SQLGetDiagRec im Argument MessageText zurückgegebene Fehlermeldung beschreibt den Fehler und seine Ursache. |
| HY001 | Speicherzuweisungsfehler | Der Treiber konnte speicher nicht zuordnen, der erforderlich ist, um die Ausführung oder den Abschluss der Funktion zu unterstützen. |
| HY010 | Funktionssequenzfehler | (DM) Eine asynchron ausgeführte Funktion wurde für den Verbindungshandle aufgerufen, der dem StatementHandle zugeordnet ist. Diese asynchrone Funktion lief noch, als die SQLGetStmtAttr-Funktion aufgerufen wurde. (DM) Eine asynchron ausgeführte Funktion wurde für " StatementHandle " aufgerufen und wurde noch ausgeführt, als diese Funktion aufgerufen wurde. (DM) SQLExecute, SQLExecDirect, SQLBulkOperations oder SQLSetPos wurde für " StatementHandle " aufgerufen und SQL_NEED_DATA zurückgegeben. Diese Funktion wurde aufgerufen, bevor Daten für alle Daten bei ausführungsparametern oder -spalten gesendet wurden. |
| HY013 | Speicherverwaltungsfehler | Der Funktionsaufruf konnte nicht verarbeitet werden, da auf die zugrunde liegenden Speicherobjekte nicht zugegriffen werden konnte, möglicherweise aufgrund geringer Arbeitsspeicherbedingungen. |
| HY090 | Ungültige Zeichenfolgen- oder Pufferlänge | (DM) *ValuePtr ist eine Zeichenkette, und BufferLength war kleiner als null, aber nicht gleich SQL_NTS. |
| HY092 | Ungültige Attribut-/Options-Identifikator | Der für das Argument Attribut angegebene Wert war für die vom Treiber unterstützte Version von ODBC nicht gültig. |
| HY109 | Ungültige Cursorposition | Das Attribut-Argument war SQL_ATTR_ROW_NUMBER und die Reihe war gelöscht oder konnte nicht abgerufen werden. |
| HY117 | Die Verbindung wird aufgrund des unbekannten Transaktionsstatus angehalten. Es sind nur Trenn- und schreibgeschützte Funktionen zulässig. | (DM) Weitere Informationen zum angehaltenen Zustand finden Sie unter SQLEndTran Function. |
| HYC00 | Optionales Feature wurde nicht implementiert | Der für das Argument Attribut angegebene Wert war ein gültiges ODBC-Anweisungsattribut für die vom Treiber unterstützte ODBC-Version, wurde jedoch nicht vom Treiber unterstützt. |
| HYT01 | Verbindungstimeout abgelaufen | Der Zeitraum für das Verbindungstimeout ist abgelaufen, bevor die Datenquelle auf die Anforderung geantwortet hat. Der Verbindungstimeoutzeitraum wird über SQLSetConnectAttr SQL_ATTR_CONNECTION_TIMEOUT festgelegt. |
| IM001 | Dieser Treiber unterstützt diese Funktion nicht. | (DM) Der dem StatementHandle entsprechende Treiber unterstützt die Funktion nicht. |
Kommentare
Allgemeine Informationen zu Aussagenattributen finden Sie unter Aussagenattribute.
Ein Aufruf von SQLGetStmtAttr gibt in *ValuePtr den Wert des in Attribut angegebenen Anweisungsattributs zurück. Dieser Wert kann entweder ein SQLULEN-Wert oder eine null-terminierte Zeichenfolge sein. Wenn der Wert ein SQLULEN-Wert ist, schreiben manche Treiber möglicherweise nur die unteren 32-Bit- oder 16-Bit-Teile eines Puffers und lassen das höherwertige Bit unverändert. Daher sollten Anwendungen einen SQLULEN-Puffer verwenden und den Wert vor dem Aufruf dieser Funktion auf 0 initialisieren. Außerdem werden die Argumente BufferLength und StringLengthPTR nicht verwendet. Ist der Wert ein null-terminierter String, gibt die Anwendung im BufferLength-Argument die maximale Länge dieses Strings an, und der Treiber gibt die Länge dieses Strings im *StringLengthPtr-Puffer zurück.
Um Anwendungen mit SQLGetStmtAttr mit ODBC 2 arbeiten zu lassen. x-Treiber wird ein Aufruf zu SQLGetStmtAttr im Driver Manager SQLGetStmtOption zugeordnet.
Die folgenden Anweisungsattribute sind schreibgeschützt, können daher von SQLGetStmtAttr abgerufen, aber nicht von SQLSetStmtAttr gesetzt werden:
SQL_ATTR_IMP_PARAM_DESC
SQL_ATTR_IMP_ROW_DESC
SQL_ATTR_ROW_NUMBER
Eine Liste von Attributen, die gesetzt und abgerufen werden können, finden Sie unter SQLSetStmtAttr.
Verwandte Funktionen
| Weitere Informationen zu | Siehe |
|---|---|
| Zurückgeben der Einstellung eines Verbindungsattributes | SQLGetConnectAttr-Funktion |
| Festlegen eines Verbindungsattributes | SQLSetConnectAttr-Funktion |
| Festlegen eines Anweisungsattributs | SQLSetStmtAttr-Funktion |