SQLGetCursorName-Funktion
Konformität
Eingeführte Version: ODBC 1.0-Standards Compliance: ISO 92
Zusammenfassung
SQLGetCursorName gibt den Cursornamen zurück, der einer angegebenen Anweisung zugeordnet ist.
Syntax
SQLRETURN SQLGetCursorName(
SQLHSTMT StatementHandle,
SQLCHAR * CursorName,
SQLSMALLINT BufferLength,
SQLSMALLINT * NameLengthPtr);
Argumente
StatementHandle
[Eingabe] Anweisungshandle.
CursorName
[Ausgabe] Zeiger auf einen Puffer, in dem der Cursorname zurückgegeben werden soll.
Wenn CursorName NULL ist, gibt NameLengthPtr weiterhin die Gesamtanzahl der Zeichen (mit Ausnahme des NULL-Terminierungszeichens für Zeichendaten) zurück, die im Puffer zurückgegeben werden können, auf den CursorName verweist.
BufferLength
[Eingabe] Länge von *CursorName in Zeichen.
NameLengthPtr
[Ausgabe] Zeiger auf den Arbeitsspeicher, in dem die Gesamtzahl der Zeichen (mit Ausnahme des NULL-Terminierungszeichens) zurückgegeben werden soll, die in *CursorName zurückgegeben werden können. Wenn die Anzahl der zurückzugebenden Zeichen größer oder gleich BufferLength ist, wird der Cursorname in *CursorName auf BufferLength abzüglich der Länge eines NULL-Terminierungszeichens abgeschnitten.
Gibt zurück
SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR oder SQL_INVALID_HANDLE.
Diagnose
Wenn SQLGetCursorName entweder SQL_ERROR oder SQL_SUCCESS_WITH_INFO zurückgibt, kann ein zugeordneter SQLSTATE-Wert abgerufen werden, indem SQLGetDiagRec mit einem HandleType von SQL_HANDLE_STMT und einem Handle of StatementHandle aufgerufen wird. In der folgenden Tabelle sind die SQLSTATE-Werte aufgeführt, die häufig von SQLGetCursorName zurückgegeben werden, und die einzelnen Werte werden im Kontext dieser Funktion erläutert. die Notation "(DM)" steht vor den Beschreibungen von SQLSTATEs, die vom Treiber-Manager zurückgegeben werden. Der Rückgabecode, der jedem SQLSTATE-Wert zugeordnet ist, ist SQL_ERROR, sofern nicht anders angegeben.
SQLSTATE | Fehler | BESCHREIBUNG |
---|---|---|
01000 | Allgemeine Warnung | Treiberspezifische Informationsmeldung. (Funktion gibt SQL_SUCCESS_WITH_INFO zurück.) |
01004 | Zeichenfolgendaten, rechts abgeschnitten | Der Puffer *CursorName war nicht groß genug, um den gesamten Cursornamen zurückzugeben, sodass der Cursorname abgeschnitten wurde. Die Länge des unwahren Cursornamens wird in *NameLengthPtr zurückgegeben. (Funktion gibt SQL_SUCCESS_WITH_INFO zurück.) |
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 *MessageText-Puffer zurückgegebene Fehlermeldung beschreibt den Fehler und seine Ursache. |
HY001 | Fehler bei der Speicherbelegung | Der Treiber konnte keinen Arbeitsspeicher zuordnen, der für die Unterstützung der Ausführung oder Fertigstellung der Funktion erforderlich ist. |
HY010 | Funktionssequenzfehler | (DM) Eine asynchron ausgeführte Funktion wurde für das Verbindungshandle aufgerufen, das dem StatementHandle zugeordnet ist. Diese asynchrone Funktion wurde noch ausgeführt, als die FUNKTION SQLGetCursorName aufgerufen wurde. (DM) SQLExecute, SQLExecDirect oder SQLMoreResults wurde für statementHandle aufgerufen und SQL_PARAM_DATA_AVAILABLE zurückgegeben. Diese Funktion wurde aufgerufen, bevor Daten für alle gestreamten Parameter abgerufen wurden. (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 der Ausführungsparameter oder -spalten gesendet wurden. |
HY013 | Fehler bei der Speicherverwaltung | Der Funktionsaufruf konnte nicht verarbeitet werden, weil auf die zugrunde liegenden Speicherobjekte nicht zugegriffen werden konnte, möglicherweise aufgrund von geringen Arbeitsspeicherbedingungen. |
HY015 | Kein Cursorname verfügbar | (DM) Der Treiber war ein ODBC 2*.x*-Treiber, es gab keinen geöffneten Cursor für die Anweisung, und es wurde kein Cursorname mit SQLSetCursorName festgelegt. |
HY090 | Ungültige Zeichenfolgen- oder Pufferlänge | (DM) Der im Argument BufferLength angegebene Wert war kleiner als 0. |
HY117 | Die Verbindung wird aufgrund eines unbekannten Transaktionsstatus angehalten. Nur trenn- und schreibgeschützte Funktionen sind zulässig. | (DM) Weitere Informationen zum angehaltenen Zustand finden Sie unter SQLEndTran-Funktion. |
HYT01 | Verbindungstimeout abgelaufen | Der Zeitraum für das Verbindungstimeout ist abgelaufen, bevor die Datenquelle auf die Anforderung geantwortet hat. Der Verbindungstimeoutzeitraum wird über SQLSetConnectAttr festgelegt, SQL_ATTR_CONNECTION_TIMEOUT. |
IM001 | Treiber unterstützt diese Funktion nicht. | (DM) Der Der StatementHandle zugeordnete Treiber unterstützt die Funktion nicht. |
Kommentare
Cursornamen werden nur in positionierten Update- und Delete-Anweisungen verwendet (z. B. UPDATE-Tabellenname ... WHERE CURRENT OFcursor-name). Weitere Informationen finden Sie unter Positionierte Update- und Delete-Anweisungen. Wenn die Anwendung sqlSetCursorName nicht aufruft, um einen Cursornamen zu definieren, generiert der Treiber einen Namen. Dieser Name beginnt mit den Buchstaben SQL_CUR.
Hinweis
Wenn in ODBC 2*.x* kein geöffneter Cursor vorhanden war und kein Name durch einen Aufruf von SQLSetCursorName festgelegt wurde, hat ein Aufruf von SQLGetCursorName SQLSTATE HY015 zurückgegeben (Kein Cursorname verfügbar). In ODBC 3*.x* ist dies nicht mehr der Fall. Unabhängig davon, wann SQLGetCursorName aufgerufen wird, gibt der Treiber den Cursornamen zurück.
SQLGetCursorName gibt den Namen eines Cursors zurück, unabhängig davon, ob der Name explizit oder implizit erstellt wurde. Ein Cursorname wird implizit generiert, wenn SQLSetCursorName nicht aufgerufen wird. SQLSetCursorName kann aufgerufen werden, um einen Cursor für eine Anweisung umzubenennen, solange sich der Cursor in einem zugeordneten oder vorbereiteten Zustand befindet.
Ein Cursorname, der entweder explizit oder implizit festgelegt ist, bleibt festgelegt, bis die Anweisungshandle , der er zugeordnet ist, gelöscht wird, wobei SQLFreeHandle mit einem HandleType von SQL_HANDLE_STMT.
Verwandte Funktionen
Informationen über | Finden Sie unter |
---|---|
Ausführen einer SQL-Anweisung | SQLExecDirect-Funktion |
Ausführen einer vorbereiteten SQL-Anweisung | SQLExecute-Funktion |
Vorbereiten einer Anweisung für die Ausführung | SQLPrepare-Funktion |
Festlegen eines Cursornamens | SQLSetCursorName-Funktion |
Weitere Informationen
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für