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 1.0 Standards Compliance: ODBC
Zusammenfassung
SQLColumnPrivileges gibt eine Liste von Spalten und zugehörigen Privilegien für die angegebene Tabelle zurück. Der Treiber liefert die Informationen als Ergebnis zurück, das auf dem angegebenen StatementHandle gesetzt ist.
Syntax
SQLRETURN SQLColumnPrivileges(
SQLHSTMT StatementHandle,
SQLCHAR * CatalogName,
SQLSMALLINT NameLength1,
SQLCHAR * SchemaName,
SQLSMALLINT NameLength2,
SQLCHAR * TableName,
SQLSMALLINT NameLength3,
SQLCHAR * ColumnName,
SQLSMALLINT NameLength4);
Arguments
StatementHandle
[Eingabe] Anweisungshandle.
Catalogname
[Eingabe] Katalogname. Wenn ein Treiber Namen für einige Kataloge unterstützt, aber nicht für andere, etwa wenn der Treiber Daten aus verschiedenen DBMS abruft, bezeichnet eine leere Zeichenkette ("") jene Kataloge, die keine Namen haben.
CatalogName kann kein String-Suchmuster enthalten.
Wenn das Attribut SQL_ATTR_METADATA_ID Statement auf SQL_TRUE gesetzt ist, wird CatalogName als Identifikator behandelt und sein Fall ist nicht signifikant. Wenn es SQL_FALSE ist, ist CatalogName ein gewöhnliches Argument; Es wird wörtlich behandelt, und sein Fall ist bedeutsam. Weitere Informationen finden Sie unter Argumente in Katalogfunktionen.
NameLength1
[Eingabe] Länge in den Zeichen von *CatalogName.
SchemaName
[Eingabe] Schemaname. Wenn ein Treiber Schemata für einige Tabellen, aber für andere nicht unterstützt, etwa wenn der Treiber Daten aus verschiedenen DBMSs abruft, bezeichnet eine leere Zeichenkette ("") jene Tabellen, die keine Schemata enthalten.
SchemaName kann kein Zeichenkettensuchmuster enthalten.
Wenn das Attribut SQL_ATTR_METADATA_ID Statement auf SQL_TRUE gesetzt ist, wird SchemaName als Identifikator behandelt. Wenn es SQL_FALSE ist, ist SchemaName ein gewöhnliches Argument; Es wird wörtlich behandelt, und sein Fall ist bedeutsam.
NameLength2
[Eingabe] Länge in den Zeichen von *SchemaName.
Tabellenname
[Eingabe] Tabellenname. Dieses Argument kann kein Nullpointer sein.
TableName kann kein Zeichenkettensuchmuster enthalten.
Wenn das Attribut SQL_ATTR_METADATA_ID Statement auf SQL_TRUE gesetzt ist, wird TableName als Identifikator behandelt und sein Fall ist nicht signifikant. Wenn es SQL_FALSE ist, ist TableName ein gewöhnliches Argument; Es wird wörtlich behandelt, und sein Fall ist bedeutsam.
NameLength3
[Eingabe] Länge in den Zeichen von *TableName.
ColumnName
[Eingabe] String-Suchmuster für Spaltennamen.
Wenn das Attribut der SQL_ATTR_METADATA_ID-Anweisung auf SQL_TRUE gesetzt ist, wird ColumnName als Identifikator behandelt und sein Fall ist nicht signifikant. Wenn es SQL_FALSE ist, ist ColumnName ein Musterwert-Argument; Es wird wörtlich behandelt, und sein Fall ist bedeutsam.
NameLength4
[Eingabe] Länge in den Zeichen von *ColumnName.
Rückkehr
SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_STILL_EXECUTING, SQL_ERROR oder SQL_INVALID_HANDLE.
Diagnostics
Wenn SQLColumnPrivileges 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 von SQLColumnPrivileges häufig zurückgegebenen SQLSTATE-Werte auf 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.) |
| 08S01 | Kommunikationslinkfehler | Die Kommunikationsverbindung zwischen dem Treiber und der Datenquelle, mit der der Treiber verbunden wurde, ist fehlgeschlagen, bevor die Verarbeitung der Funktion abgeschlossen wurde. |
| 24000 | Ungültiger Cursorstatus | Ein Cursor war auf dem StatementHandle geöffnet, und SQLFetch oder SQLFetchScroll war aufgerufen worden. Dieser Fehler wird vom Treiber-Manager zurückgegeben, wenn SQLFetch oder SQLFetchScroll nicht SQL_NO_DATA zurückgegeben hat und vom Treiber zurückgegeben wird, wenn SQLFetch oder SQLFetchScroll SQL_NO_DATA zurückgegeben wurde. Ein Cursor war auf dem StatementHandle geöffnet, aber SQLFetch oder SQLFetchScroll waren nicht aufgerufen worden. |
| 40001 | Serialisierungsfehler | Die Transaktion wurde aufgrund eines Ressourcen-Deadlocks mit einer anderen Transaktion zurückgesetzt. |
| 40003 | Abschluss der Anweisung unbekannt | Fehler bei der zugehörigen Verbindung während der Ausführung dieser Funktion, und der Status der Transaktion kann nicht bestimmt werden. |
| 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 dessen Ursache. |
| HY001 | Speicherzuweisungsfehler | Der Treiber konnte speicher nicht zuordnen, der erforderlich ist, um die Ausführung oder den Abschluss der Funktion zu unterstützen. |
| HY008 | Vorgang abgebrochen | Die asynchrone Verarbeitung wurde für " StatementHandle" aktiviert. Die Funktion wurde aufgerufen, und bevor sie die Ausführung abgeschlossen hat, wurde SQLCancel oder SQLCancelHandle für die Anweisungshandle aufgerufen. Anschließend wurde die Funktion erneut für " StatementHandle" aufgerufen. Die Funktion wurde aufgerufen, und bevor sie die Ausführung abgeschlossen hat, wurde SQLCancel oder SQLCancelHandle für das StatementHandle von einem anderen Thread in einer Multithreadanwendung aufgerufen. |
| HY009 | Ungültige Verwendung des Nullzeigers | Das Argument "TableName" war ein Nullzeiger. Das Attribut SQL_ATTR_METADATA_ID Statement wurde auf SQL_TRUE gesetzt, das CatalogName-Argument war ein Nullzeiger, und der SQL_CATALOG_NAME InfoType gibt an, dass Katalognamen unterstützt werden. (DM) Das Attribut SQL_ATTR_METADATA_ID Statement wurde auf SQL_TRUE gesetzt, und das SchemaName- oder ColumnName-Argument war ein Nullzeiger. |
| 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 diese Funktion 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 (nicht diese) wurde für das 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) Der Wert eines der Namenslängenargumente war kleiner als 0, aber nicht gleich SQL_NTS. |
| Der Wert eines der Namenlängenargumente hat den maximal zulässigen Längenwert für den entsprechenden Namen überschritten. (Siehe "Kommentare.") | ||
| 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 | Ein Katalogname wurde angegeben, und der Treiber oder die Datenquelle unterstützt keine Kataloge. Ein Schema-Name wurde angegeben, und der Treiber oder die Datenquelle unterstützt keine Schemata. Für den Spaltennamen wurde ein String-Suchmuster angegeben, und die Datenquelle unterstützt keine Suchmuster für dieses Argument. Die Kombination aus den aktuellen Einstellungen der SQL_CONCURRENCY und SQL_CURSOR_TYPE Anweisungsattributen wurde weder vom Treiber noch von der Datenquelle unterstützt. Das attribut der SQL_ATTR_USE_BOOKMARKS-Anweisung wurde auf SQL_UB_VARIABLE festgelegt, und das Attribut der SQL_ATTR_CURSOR_TYPE-Anweisung wurde auf einen Cursortyp festgelegt, für den der Treiber keine Lesezeichen unterstützt. |
| HYT00 | Timeout überschritten | Der Abfragetimeoutzeitraum ist abgelaufen, bevor die Datenquelle das Resultset zurückgibt. Der Timeoutzeitraum wird über SQLSetStmtAttr SQL_ATTR_QUERY_TIMEOUT festgelegt. |
| 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 zugeordnete Treiber unterstützt die Funktion nicht. |
| IM017 | Die Abrufung ist im asynchronen Benachrichtigungsmodus deaktiviert. | Immer wenn das Benachrichtigungsmodell verwendet wird, ist die Abrufung deaktiviert. |
| IM018 | SQLCompleteAsync wurde nicht aufgerufen, um den vorherigen asynchronen Vorgang für dieses Handle abzuschließen. | Wenn der vorherige Funktionsaufruf für das Handle SQL_STILL_EXECUTING zurückgibt und der Benachrichtigungsmodus aktiviert ist, muss SQLCompleteAsync für das Handle aufgerufen werden, um die Nachbearbeitung durchzuführen und den Vorgang abzuschließen. |
Kommentare
SQLColumnPrivileges gibt die Ergebnisse als Standardergebnisset zurück, geordnet nach TABLE_CAT, TABLE_SCHEM, TABLE_NAME, COLUMN_NAME und PRIVILEGE.
Note
SQLColumnPrivileges geben möglicherweise nicht für alle Spalten Rechte zurück. Zum Beispiel gibt ein Treiber möglicherweise keine Informationen über Privilegien für Pseudo-Spalten zurück, wie zum Beispiel Oracle ROWID. Anwendungen können jede gültige Spalte verwenden, unabhängig davon, ob sie von SQLColumnPrivileges zurückgegeben wird.
Die Längen der VARCHAR-Säulen sind in der Tabelle nicht angegeben; Die tatsächlichen Längen hängen von der Datenquelle ab. Um die tatsächlichen Längen der Spalten CATALOG_NAME, SCHEMA_NAME, TABLE_NAME und COLUMN_NAME zu bestimmen, kann eine Anwendung SQLGetInfo mit den Optionen SQL_MAX_CATALOG_NAME_LEN, SQL_MAX_SCHEMA_NAME_LEN, SQL_MAX_TABLE_NAME_LEN und SQL_MAX_COLUMN_NAME_LEN aufrufen.
Note
Weitere Informationen zur allgemeinen Verwendung, zu Argumenten und zurückgegebenen Daten von ODBC-Katalogfunktionen finden Sie unter Katalogfunktionen.
Die folgenden Spalten wurden für ODBC 3 umbenannt. x. Die Änderungen des Spaltennamens beeinflussen die Abwärtskompatibilität nicht, da Anwendungen nach Spaltennummer binden.
| ODBC 2.0-Spalte | ODBC 3. X-Spalte |
|---|---|
| TABLE_QUALIFIER | TABLE_CAT |
| Tabellenbesitzer | TABLE_SCHEM |
In der folgenden Tabelle sind die Spalten im Resultset aufgeführt. Zusätzliche Spalten über Spalte 8 (IS_GRANTABLE) hinaus können vom Treiber definiert werden. Eine Anwendung sollte auf treiberspezifische Spalten zuzugreifen, indem sie vom Ende der Ergebnismenge herunterzählt, anstatt eine explizite Ordinalposition anzugeben. Weitere Informationen finden Sie unter "Von Katalogfunktionen zurückgegebene Daten".
| Spaltenname | Spaltennummer | Datentyp | Kommentare |
|---|---|---|---|
| TABLE_CAT (ODBC 1.0) | 1 | Varchar | Katalogkennung; NULL, falls es nicht auf die Datenquelle anwendbar ist. Wenn ein Treiber Kataloge für einige Tabellen, aber für andere nicht unterstützt, etwa wenn der Treiber Daten aus verschiedenen DBMSs abruft, gibt er für jene Tabellen, die keine Kataloge haben, eine leere Zeichenkette ("") zurück. |
| TABLE_SCHEM (ODBC 1.0) | 2 | Varchar | Schema-Identifikator; NULL, falls es nicht auf die Datenquelle anwendbar ist. Wenn ein Treiber für einige Tabellen Schemata unterstützt, aber nicht für andere, etwa wenn der Treiber Daten aus verschiedenen DBMS abruft, gibt er für jene Tabellen, die keine Schemata enthalten, eine leere Zeichenkette ("") zurück. |
| TABLE_NAME (ODBC 1.0) | 3 | Varchar nicht NULL | Tabellenkennung. |
| COLUMN_NAME (ODBC 1.0) | 4 | Varchar nicht NULL | Spaltenname. Der Treiber gibt eine leere Zeichenkette für eine Spalte zurück, die keinen Namen hat. |
| GRANTOR (ODBC 1.0) | 5 | Varchar | Name des Benutzers, der das Privileg gewährt hat; NULL, falls es nicht auf die Datenquelle anwendbar ist. Für alle Zeilen, in denen der Wert in der GRANTEE-Spalte Eigentümer des Objekts ist, wird die GRANTOR-Spalte "_SYSTEM". |
| FÖRDERER (ODBC 1.0) | 6 | Varchar nicht NULL | Name des Benutzers, dem das Privileg gewährt wurde. |
| PRIVILEG (ODBC 1.0) | 7 | Varchar nicht NULL | Identifiziert das Spaltenprivilegium. Kann eines der folgenden (oder andere, die von der Datenquelle bei Implementierungsdefinition unterstützt werden) sein: SELECT: Der Begünstigte darf Daten für die Spalte abrufen. INSERT: Der Begünstigte darf Daten für die Spalte in neuen Zeilen bereitstellen, die in die zugehörige Tabelle eingefügt werden. UPDATE: Der Begünstigte darf die Daten in der Spalte aktualisieren. REFERENZEN: Der Empfänger darf auf die Spalte innerhalb einer Einschränkung verweisen (zum Beispiel eine eindeutige, referenzielle oder tabellenprüfbare Einschränkung). |
| IS_GRANTABLE (ODBC 1.0) | 8 | Varchar | Gibt an, ob der Empfänger das Privileg anderen Nutzern gewähren darf; "JA", "NEIN" oder "NULL", falls unbekannt oder nicht auf die Datenquelle zutreffend ist. Ein Privileg ist entweder gewährbar oder nicht, aber nicht beides. Die von SQLColumnPrivileges zurückgegebene Ergebnismenge enthält niemals zwei Zeilen, für die alle Spalten außer der IS_GRANTABLE Spalte denselben Wert enthalten. |
Codebeispiel
Ein Codebeispiel für eine ähnliche Funktion finden Sie unter SQLColumns Function.
Verwandte Funktionen
| Informationen zum | Siehe |
|---|---|
| Binden eines Puffers an eine Spalte in einem Resultset | SQLBindCol-Funktion |
| Abbrechen der Verarbeitung von Anweisungen | SQLCancel-Funktion |
| Rückgabe der Spalten in einer Tabelle oder mehreren Tabellen | SQLColumns-Funktion |
| Abrufen eines Datenblocks oder Scrollen durch ein Resultset | SQLFetchScroll-Funktion |
| Abrufen mehrerer Datenzeilen | SQLFetch-Funktion |
| Rückgabe von Privilegien für eine Tabelle oder mehrere Tabellen | SQLTablePrivileges-Funktion |
| Rückgabe einer Liste von Tabellen in einer Datenquelle | SQLTables-Funktion |