Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Soulad
Zavedená verze: ODBC 1.0 Soulad standardů: ODBC
Shrnutí
SQLColumnPrivileges vrací seznam sloupců a souvisejících oprávnění pro danou tabulku. Ovladač vrací informace jako výslednou sadu na specifikovaném CommandHandle.
Syntax
SQLRETURN SQLColumnPrivileges(
SQLHSTMT StatementHandle,
SQLCHAR * CatalogName,
SQLSMALLINT NameLength1,
SQLCHAR * SchemaName,
SQLSMALLINT NameLength2,
SQLCHAR * TableName,
SQLSMALLINT NameLength3,
SQLCHAR * ColumnName,
SQLSMALLINT NameLength4);
Arguments
StatementHandle
[Vstup] Popisovač příkazu
CatalogName
[Vstup] Název katalogu. Pokud ovladač podporuje názvy pro některé katalogy, ale ne pro jiné, například když ovladač získává data z různých DBMS, prázdný řetězec ("") označuje ty katalogy, které nemají jména.
CatalogName nemůže obsahovat vzor vyhledávání řetězců.
Pokud je atribut SQL_ATTR_METADATA_ID příkazu nastaven na SQL_TRUE, CatalogName je považován za identifikátor a jeho případ není významný. Pokud je to SQL_FALSE, CatalogName je běžný argument; Je brána doslovně a její případ je významný. Další informace naleznete v tématu Argumenty funkce katalogu.
NameLength1
[Vstup] Délka znaků *CatalogName.
Název schématu
[Vstup] Název schématu Pokud ovladač podporuje schémata pro některé tabulky, ale ne pro jiné, například když ovladač získává data z různých DBMS, prázdný řetězec ("") označuje tabulky, které schémata nemají.
SchemaName nemůže obsahovat vzor vyhledávání řetězců.
Pokud je atribut SQL_ATTR_METADATA_ID příkazu nastaven na SQL_TRUE, SchemaName je považován za identifikátor. Pokud je to SQL_FALSE, SchemaName je běžný argument; Je brána doslovně a její případ je významný.
NameLength2
[Vstup] Délka znaků *SchemaName.
TableName
[Vstup] Název tabulky Tento argument nemůže být nulovým ukazatelem.
TableName nemůže obsahovat vzor vyhledávání řetězců.
Pokud je atribut SQL_ATTR_METADATA_ID příkazu nastaven na SQL_TRUE, TableName je považován za identifikátor a jeho případ není významný. Pokud je to SQL_FALSE, TableName je běžný argument; Je brána doslovně a její případ je významný.
NameLength3
[Vstup] Délka znaků *TableName.
ColumnName
[Vstup] Vzor vyhledávání řetězců pro názvy sloupců.
Pokud je atribut SQL_ATTR_METADATA_ID příkazu nastaven na SQL_TRUE, ColumnName je považován za identifikátor a jeho případ není významný. Pokud je to SQL_FALSE, ColumnName je argument hodnoty vzoru; Je brána doslovně a její případ je významný.
NameLength4
[Vstup] Délka ve znacích *ColumnName.
Returns
SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_STILL_EXECUTING, SQL_ERROR nebo SQL_INVALID_HANDLE.
Diagnostics
Když SQLColumnPrivileges vrátí SQL_ERROR nebo SQL_SUCCESS_WITH_INFO, lze získat přidruženou hodnotu SQLSTATE voláním SQLGetDiagRec s HandleType SQL_HANDLE_STMT a HandleCommandHandle. Následující tabulka uvádí hodnoty SQLSTATE, které SQLColumnPrivileges běžně vrací, a vysvětluje každou z nich v kontextu této funkce; notace "(DM)" předchází popisům SQLstavů vráceným Správcem ovladačů. Návratový kód přidružený ke každé hodnotě SQLSTATE je SQL_ERROR, pokud není uvedeno jinak.
| SQLSTATE | Error | Description |
|---|---|---|
| 01000 | Obecné upozornění | Informační zpráva specifická pro řidiče (Funkce vrátí SQL_SUCCESS_WITH_INFO.) |
| 08S01 | Selhání komunikačního propojení | Komunikační propojení mezi ovladačem a zdrojem dat, ke kterému byl ovladač připojen, selhalo před dokončením zpracování funkce. |
| 24000 | Neplatný stav kurzoru | Na StatementHandle byl otevřený kurzor a byly volány SQLFetch nebo SQLFetchScroll . Tato chyba je vrácena Správcem ovladačů, pokud SQLFetch nebo SQLFetchScroll nevrátil SQL_NO_DATA a ovladač je vrácen, pokud SQLFetch nebo SQLFetchScroll vrátil SQL_NO_DATA. Na StatementHandle byl otevřený kurzor, ale SQLFetch nebo SQLFetchScroll nebyly volány. |
| 40001 | Selhání serializace | Transakce byla vrácena zpět kvůli vzájemnému zablokování prostředku s jinou transakcí. |
| 40003 | Neznámé dokončování příkazů | Přidružené připojení se nezdařilo během provádění této funkce a stav transakce nelze určit. |
| HY000 | Obecná chyba | Došlo k chybě, pro kterou nebyla definována žádná specifická funkce SQLSTATE a pro kterou nebyla definována žádná implementace sqlSTATE. Chybová zpráva vrácená nástrojem SQLGetDiagRec v vyrovnávací paměti *MessageText popisuje chybu a její příčinu. |
| HY001 | Chyba přidělení paměti | Ovladač nemohl přidělit paměť potřebnou k podpoře provádění nebo dokončení funkce. |
| HY008 | Operace byla zrušena. | Asynchronní zpracování bylo povoleno pro StatementHandle. Funkce byla volána a před dokončením provádění byla volána funkce SQLCancel nebo SQLCancelHandle pro PříkazHandle. Pak byla funkce znovu volána v StatementHandle. Funkce byla volána a před dokončením provádění byla volána funkce SQLCancel neboSQLCancelHandlez jiného vlákna v aplikaci s více vlákny. |
| HY009 | Neplatné použití ukazatele null | Argument TableName byl ukazatel null. Atribut SQL_ATTR_METADATA_ID příkazu byl nastaven na SQL_TRUE, argument CatalogName byl nulový ukazatel a SQL_CATALOG_NAME InfoType vrací, že jsou podporována jména katalogů. (DM) Atribut SQL_ATTR_METADATA_ID příkazu byl nastaven na SQL_TRUE a argument SchemaName nebo ColumnName byl nulový ukazatel. |
| HY010 | Chyba posloupnosti funkcí | (DM) Byla volána asynchronně spuštěná funkce pro popisovač připojení, který je přidružen k StatementHandle. Tato asynchronní funkce byla stále vykonávána, když byla volána. (DM) SQLExecute, SQLExecDirect nebo SQLMoreResults byl volána pro StatementHandle a vrácena SQL_PARAM_DATA_AVAILABLE. Tato funkce byla volána před načtením dat pro všechny streamované parametry. (DM) Pro PříkazHandle byla volána asynchronně spuštěná funkce (ne tato) a při zavolání této funkce se stále spouštěla. (DM) SQLExecute, SQLExecDirect, SQLBulkOperations nebo SQLSetPos byly volány pro StatementHandle a vráceny SQL_NEED_DATA. Tato funkce byla volána před odesláním dat pro všechny parametry provádění dat nebo sloupce. |
| HY013 | Chyba správy paměti | Volání funkce nelze zpracovat, protože základní objekty paměti nelze získat přístup, pravděpodobně kvůli nedostatku paměti. |
| HY090 | Neplatná délka řetězce nebo vyrovnávací paměti | (DM) Hodnota jednoho z argumentů délky názvu byla menší než 0, ale nebyla rovna SQL_NTS. |
| Hodnota jednoho z argumentů délky názvu překročila maximální hodnotu délky odpovídajícího názvu. (Viz "Komentáře.") | ||
| HY117 | Připojení je pozastaveno kvůli neznámému stavu transakce. Jsou povoleny pouze funkce pro odpojení a jen pro čtení. | (DM) Další informace o pozastaveném stavu naleznete v tématu FUNKCE SQLEndTran. |
| HYC00 | Nepovinná funkce není implementována. | Byl zadán název katalogu a ovladač nebo zdroj dat katalogy nepodporuje. Byl specifikován název schématu a ovladač nebo zdroj dat schémata nepodporuje. Pro název sloupce byl specifikován vzor vyhledávání řetězců, ale zdroj dat nepodporuje vyhledávací vzory pro tento argument. Kombinace aktuálních nastavení atributů příkazu SQL_CONCURRENCY a SQL_CURSOR_TYPE nebyla podporována ovladačem ani zdrojem dat. Atribut příkazu SQL_ATTR_USE_BOOKMARKS byl nastaven na SQL_UB_VARIABLE a atribut příkazu SQL_ATTR_CURSOR_TYPE byl nastaven na typ kurzoru, pro který ovladač nepodporuje záložky. |
| HYT00 | Vypršel časový limit. | Platnost časového limitu dotazu vypršela, než zdroj dat vrátil sadu výsledků. Časový limit je nastavený prostřednictvím sqlSetStmtAttr SQL_ATTR_QUERY_TIMEOUT. |
| HYT01 | Vypršel časový limit připojení | Platnost časového limitu připojení vypršela, než zdroj dat odpověděl na žádost. Časový limit připojení je nastavený prostřednictvím sqlSetConnectAttr SQL_ATTR_CONNECTION_TIMEOUT. |
| IM001 | Ovladač tuto funkci nepodporuje. | (DM) Ovladač přidružený k StatementHandle nepodporuje funkci. |
| IM017 | Dotazování je zakázané v asynchronním režimu oznámení. | Při každém použití modelu oznámení je dotazování zakázané. |
| IM018 | K dokončení předchozí asynchronní operace na tomto popisovači nebyla volána funkce SQLCompleteAsync. | Pokud předchozí volání funkce na popisovači vrátí SQL_STILL_EXECUTING a pokud je povolen režim oznámení, musí být sqlCompleteAsync volán na popisovači, aby bylo možné provést následné zpracování a dokončit operaci. |
Comments
SQLColumnPrivileges vrací výsledky jako standardní sadu výsledků, seřazenou podle TABLE_CAT, TABLE_SCHEM, TABLE_NAME, COLUMN_NAME a PRIVILEGE.
Note
SQLColumnPrivileges nemusí vracet privilegia pro všechny sloupce. Například ovladač nemusí vracet informace o oprávněních pro pseudosloupce, jako je Oracle ROWID. Aplikace mohou používat jakýkoli platný sloupec, bez ohledu na to, zda je vrácen pomocí SQLColumnPrivileges.
Délky sloupců VARCHAR nejsou v tabulce uvedeny; skutečné délky závisí na zdroji dat. Pro určení skutečných délek sloupců CATALOG_NAME, SCHEMA_NAME, TABLE_NAME a COLUMN_NAME může aplikace volat SQLGetInfo s možnostmi SQL_MAX_CATALOG_NAME_LEN, SQL_MAX_SCHEMA_NAME_LEN, SQL_MAX_TABLE_NAME_LEN a SQL_MAX_COLUMN_NAME_LEN.
Note
Další informace o obecném použití, argumentech a vrácených datech funkcí katalogu ODBC naleznete v tématu Funkce katalogu.
Následující sloupky byly přejmenovány pro ODBC 3. x. Změny názvů sloupců neovlivňují zpětnou kompatibilitu, protože aplikace se vážou podle čísla sloupce.
| Sloupec ODBC 2.0 | ODBC 3. sloupec x |
|---|---|
| kvalifikátor_tabulky | TABLE_CAT |
| Vlastník tabulky | TABLE_SCHEM |
Následující tabulka uvádí sloupce v sadě výsledků. Další sloupce za sloupcem 8 (IS_GRANTABLE) může řidič definovat. Aplikace by měla získat přístup ke sloupcům specifickým pro ovladač odpočítáváním od konce výsledné množiny místo explicitního určení ordinální pozice. Další informace naleznete v tématu Data vrácená funkcemi katalogu.
| Název sloupce | Číslo sloupce | Datový typ | Comments |
|---|---|---|---|
| TABLE_CAT (ODBC 1.0) | 1 | Varchar | identifikátor katalogu; NULL, pokud není relevantní pro datový zdroj. Pokud ovladač podporuje katalogy pro některé tabulky, ale ne pro jiné, například když ovladač získává data z různých DBMS, vrátí prázdný řetězec ("") pro tabulky, které katalogy nemají. |
| TABLE_SCHEM (ODBC 1.0) | 2 | Varchar | identifikátor schématu; NULL, pokud není relevantní pro datový zdroj. Pokud ovladač podporuje schémata pro některé tabulky, ale ne pro jiné, například když ovladač získává data z různých DBMS, vrátí prázdný řetězec ("") pro tabulky, které schémata nemají. |
| TABLE_NAME (ODBC 1.0) | 3 | Varchar, ne NULL | Identifikátor tabulky. |
| COLUMN_NAME (ODBC 1.0) | 4 | Varchar, ne NULL | Název sloupce Ovladač vrací prázdný řetězec pro sloupec, který nemá jméno. |
| GRANTOR (ODBC 1.0) | 5 | Varchar | Jméno uživatele, který mu toto oprávnění udělil; NULL, pokud není relevantní pro datový zdroj. Pro všechny řádky, kde je hodnota ve sloupci GRANTEE vlastníkem objektu, bude sloupec GRANTOR "_SYSTEM". |
| PŘÍJEMCE (ODBC 1.0) | 6 | Varchar, ne NULL | Jméno uživatele, kterému bylo toto oprávnění uděleno. |
| PRIVILEGIUM (ODBC 1.0) | 7 | Varchar, ne NULL | Identifikuje privilegium sloupce. Může být jedním z následujících (nebo jinými, které je zdroj dat při implementaci definován): SELECT: Příjemce grantu má povolení získávat data pro sloupec. INSERT: Příjemce je oprávněn poskytovat data pro sloupec v nových řádcích, které jsou vloženy do příslušné tabulky. UPDATE: Příjemce grantu má oprávnění aktualizovat data ve sloupci. REFERENCE: Příjemce může odkazovat na sloupec v rámci určitého omezení (například na jedinečné, referenční nebo tabulkové kontrolní omezení). |
| IS_GRANTABLE (ODBC 1.0) | 8 | Varchar | Uvádí, zda má příjemce oprávnění udělit toto privilegium ostatním uživatelům; "ANO", "NE" nebo "NULL", pokud nejsou známé nebo se nevztahují na datový zdroj. Privilegium je buď udělitelné, nebo neudělitelné, ale ne obojí. Výsledná sada vrácená pomocí SQLColumnPrivileges nikdy nebude obsahovat dva řádky, pro které všechny sloupce kromě sloupce IS_GRANTABLE obsahují stejnou hodnotu. |
Příklad kódu
Příklad kódu podobné funkce naleznete v tématu FUNKCE SQLColumns.
Související funkce
| Informace o | Podívejte se |
|---|---|
| Vytvoření vazby vyrovnávací paměti ke sloupci v sadě výsledků | SQLBindCol – funkce |
| Zrušení zpracování příkazů | SQLCancel – funkce |
| Vrácení sloupců v tabulce nebo tabulkách | SQLColumns Function |
| Načtení bloku dat nebo procházení sady výsledků | SQLFetchScroll – funkce |
| Načítání více řádků dat | Funkce SQLFetch |
| Vrácení oprávnění pro tabulku nebo tabulky | Funkce SQLTablePrivileges |
| Vrácení seznamu tabulek ve zdroji dat | Funkce SQLTables |