Functie SQLTablePrivileges

Conformiteit
Versie geïntroduceerd: ODBC 1.0 Standaardnaleving: ODBC

Samenvatting
SQLTablePrivileges geeft een lijst van tabellen en de privileges die aan elke tabel zijn gekoppeld. De driver retourneert de informatie als resultaat dat op de opgegeven instructie is gezet.

Syntax

  
SQLRETURN SQLTablePrivileges(  
     SQLHSTMT      StatementHandle,  
     SQLCHAR *     CatalogName,  
     SQLSMALLINT   NameLength1,  
     SQLCHAR *     SchemaName,  
     SQLSMALLINT   NameLength2,  
     SQLCHAR *     TableName,  
     SQLSMALLINT   NameLength3);  

Arguments

StatementHandle
[Invoer] Instructiehandgreep.

CatalogName
[Invoer] Tafelcatalogus. Als een driver catalogi ondersteunt voor sommige tabellen maar niet voor andere, bijvoorbeeld wanneer de driver gegevens ophaalt uit verschillende DBMS'en, duidt een lege string ("") die tabellen aan die geen catalogi hebben. CatalogName kan geen zoekpatroon voor strings bevatten.

Als het SQL_ATTR_METADATA_ID-statementattribuut is ingesteld op SQL_TRUE, wordt CatalogName behandeld als een identificatie en is het geval niet significant. Als het SQL_FALSE is, is CatalogName een gewoon argument; Het wordt letterlijk behandeld en het geval is belangrijk. Zie Argumenten in Catalogusfuncties voor meer informatie.

NameLength1
[Invoer] Lengte in tekens van *CatalogName.

Schemanaam
[Invoer] Stringzoekpatroon voor schemanamen. Als een driver schema's ondersteunt voor sommige tabellen maar niet voor andere, bijvoorbeeld wanneer de driver gegevens ophaalt uit verschillende DBMS'en, duidt een lege string ("") die tabellen aan die geen schema's bevatten.

Als het SQL_ATTR_METADATA_ID-statement-attribuut is ingesteld op SQL_TRUE, wordt SchemaName behandeld als een identifier en is het geval niet significant. Als het SQL_FALSE is, is SchemaName een patroonwaarde-argument; Het wordt letterlijk behandeld en het geval is belangrijk.

NameLength2
[Invoer] Lengte in tekens van *SchemaName.

TableName
[Invoer] Stringzoekpatroon voor tabelnamen.

Als het SQL_ATTR_METADATA_ID-statement-attribuut is ingesteld op SQL_TRUE, wordt TableName behandeld als een identifier en is het geval niet significant. Als het SQL_FALSE is, is TableName een patroonwaarde-argument; Het wordt letterlijk behandeld en het geval is belangrijk.

NameLength3
[Invoer] Lengte in tekens van *TableName.

Returns

SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_STILL_EXECUTING, SQL_ERROR of SQL_INVALID_HANDLE.

Diagnostics

Wanneer SQLTablePrivileges SQL_ERROR of SQL_SUCCESS_WITH_INFO teruggeeft, kan een bijbehorende SQLSTATE-waarde worden verkregen door SQLGetDiagRec aan te roepen met een HandleType van SQL_HANDLE_STMT en een Handle van StatementHandle. De volgende tabel geeft een overzicht van de SQLSTATE-waarden die vaak door SQLTablePrivileges worden geretourneerd en legt elk uit in de context van deze functie; de notatie "(DM)" gaat vooraf aan de beschrijvingen van SQLSTATES die door de Driver Manager worden teruggegeven. De retourcode die is gekoppeld aan elke SQLSTATE-waarde is SQL_ERROR, tenzij anders vermeld.

SQLSTATE Fout Description
01000 Algemene waarschuwing Stuurprogrammaspecifiek informatiebericht. (Functie retourneert SQL_SUCCESS_WITH_INFO.)
08S01 Communicatiekoppelingsfout De communicatiekoppeling tussen het stuurprogramma en de gegevensbron waarmee het stuurprogramma is verbonden, is mislukt voordat de verwerking van de functie is voltooid.
24000 Ongeldige cursorstatus Er stond een cursor open op de StatementHandle, en SQLFetch of SQLFetchScroll was aangeroepen. Deze fout wordt door de Driver Manager teruggegeven als SQLFetch of SQLFetchScroll niet SQL_NO_DATA heeft teruggegeven en wordt door de driver teruggegeven als SQLFetch of SQLFetchScroll SQL_NO_DATA heeft teruggegeven.

Er stond een cursor open op de StatementHandle, maar SQLFetch of SQLFetchScroll waren nog niet aangeroepen.
40001 Serialisatiefout De transactie is teruggedraaid vanwege een resource-impasse met een andere transactie.
40003 Voltooiing van instructie onbekend De gekoppelde verbinding is mislukt tijdens de uitvoering van deze functie en de status van de transactie kan niet worden bepaald.
HY000 Algemene fout Er is een fout opgetreden waarvoor er geen specifieke SQLSTATE is en waarvoor geen implementatiespecifieke SQLSTATE is gedefinieerd. Het foutbericht dat door SQLGetDiagRec in de *MessageText-buffer wordt geretourneerd, beschrijft de fout en de oorzaak ervan.
HY001 Fout bij geheugentoewijzing Het stuurprogramma kan geen geheugen toewijzen dat nodig is om de uitvoering of voltooiing van de functie te ondersteunen.
HY008 Bewerking geannuleerd Asynchrone verwerking is ingeschakeld voor de StatementHandle. De SQLTablePrivileges-functie werd aangeroepen, en voordat de uitvoering voltooid was, werd SQLCancel of SQLCancelHandle aangeroepen op de StatementHandle. Daarna werd de SQLTablePrivileges-functie opnieuw aangeroepen op de StatementHandle.

De SQLTablePrivileges-functie werd aangeroepen, en voordat de uitvoering was voltooid, werd SQLCancel of SQLCancelHandle aangeroepen op de StatementHandle van een andere thread in een multithread-applicatie.
HY009 Ongeldig gebruik van null-aanwijzer Het SQL_ATTR_METADATA_ID-statement-attribuut was ingesteld op SQL_TRUE, het CatalogName-argument was een nullpointer, en de SQL_CATALOG_NAME InfoType geeft aan dat catalogusnamen worden ondersteund.

(DM) Het SQL_ATTR_METADATA_ID-statementattribuut werd ingesteld op SQL_TRUE, en het SchemaName- of TableName-argument was een nullpointer.
HY010 Fout in functiereeks (DM) Er is een asynchroon uitgevoerde functie aangeroepen voor de verbindingsgreep die is gekoppeld aan de StatementHandle. Deze asynchrone functie werd nog uitgevoerd toen de SQLTablePrivileges-functie werd aangeroepen.

(DM) SQLExecute, SQLExecDirect of SQLMoreResults werd aangeroepen voor de StatementHandle en geretourneerd SQL_PARAM_DATA_AVAILABLE. Deze functie is aangeroepen voordat gegevens zijn opgehaald voor alle gestreamde parameters.

(DM) Er is een asynchroon uitgevoerde functie (niet deze) aangeroepen voor de StatementHandle en werd nog steeds uitgevoerd toen deze functie werd aangeroepen.

(DM) SQLExecute, SQLExecDirect, SQLBulkOperations of SQLSetPos werd aangeroepen voor de StatementHandle en geretourneerd SQL_NEED_DATA. Deze functie is aangeroepen voordat gegevens werden verzonden voor alle parameters of kolommen voor uitvoering van gegevens.
HY013 Fout bij geheugenbeheer De functie-aanroep kan niet worden verwerkt omdat de onderliggende geheugenobjecten niet kunnen worden geopend, mogelijk vanwege weinig geheugen.
HY090 Ongeldige tekenreeks- of bufferlengte (DM) De waarde van een van de naamlengteargumenten was minder dan 0, maar niet gelijk aan SQL_NTS.

De waarde van een van de naamlengteargumenten overschreed de maximale lengtewaarde voor de bijbehorende kwalifiseerder of naam.
HY117 De verbinding is onderbroken vanwege een onbekende transactiestatus. Alleen de verbinding verbreken en alleen-lezenfuncties zijn toegestaan. (DM) Voor meer informatie over de onderbroken toestand, zie SQLEndTran Function.
HYC00 Optionele functie niet geïmplementeerd Er werd een catalogus gespecificeerd, en de driver of databron ondersteunt geen catalogi.

Er werd een schema gespecificeerd, en de driver of databron ondersteunt geen schema's.

Er werd een stringzoekpatroon gespecificeerd voor het tabelschema, de tabelnaam of de kolomnaam, en de databron ondersteunt geen zoekpatronen voor een of meer van die argumenten.

De combinatie van de huidige instellingen van de SQL_ATTR_CONCURRENCY- en SQL_ATTR_CURSOR_TYPE instructiekenmerken wordt niet ondersteund door het stuurprogramma of de gegevensbron.

Het kenmerk SQL_ATTR_USE_BOOKMARKS instructie is ingesteld op SQL_UB_VARIABLE en het kenmerk SQL_ATTR_CURSOR_TYPE instructie is ingesteld op een cursortype waarvoor het stuurprogramma geen bladwijzers ondersteunt.
HYT00 Time-out verlopen De time-outperiode van de query is verlopen voordat de gegevensbron de resultatenset heeft geretourneerd. De time-outperiode wordt ingesteld via SQLSetStmtAttr, SQL_ATTR_QUERY_TIMEOUT.
HYT01 Time-out voor de verbinding is overschreden De time-outperiode voor de verbinding is verlopen voordat de gegevensbron op de aanvraag heeft gereageerd. De time-outperiode voor de verbinding wordt ingesteld via SQLSetConnectAttr, SQL_ATTR_CONNECTION_TIMEOUT.
IM001 Stuurprogramma biedt geen ondersteuning voor deze functie (DM) Het stuurprogramma dat is gekoppeld aan de StatementHandle biedt geen ondersteuning voor de functie.
IM017 Polling is uitgeschakeld in de asynchrone meldingsmodus Wanneer het meldingsmodel wordt gebruikt, wordt polling uitgeschakeld.
IM018 SQLCompleteAsync is niet aangeroepen om de vorige asynchrone bewerking op deze ingang te voltooien. Als de vorige functieaanroep op de ingang SQL_STILL_EXECUTING retourneert en als de meldingsmodus is ingeschakeld, moet SQLCompleteAsync worden aangeroepen op de ingang om naverwerking te kunnen uitvoeren en de bewerking te voltooien.

Comments

De argumenten SchemaName en TableName accepteren zoekpatronen. Voor meer informatie over geldige zoekpatronen, zie Patroonwaardeargumenten.

SQLTablePrivileges geeft de resultaten terug als een standaard resultaatset, geordend op TABLE_CAT, TABLE_SCHEM, TABLE_NAME, PRIVILEGE en GRANTEE.

Om de werkelijke lengtes van de kolommen TABLE_CAT, TABLE_SCHEM en TABLE_NAME te bepalen, kan een applicatie SQLGetInfo aanroepen met de opties SQL_MAX_CATALOG_NAME_LEN, SQL_MAX_SCHEMA_NAME_LEN en SQL_MAX_TABLE_NAME_LEN.

Note

Zie Catalogusfuncties voor meer informatie over het algemene gebruik, argumenten en geretourneerde gegevens van ODBC-catalogusfuncties.

De naam van de volgende kolommen is gewijzigd voor ODBC 3.x. De wijzigingen in kolomnamen beïnvloeden de achterwaartse compatibiliteit niet, omdat applicaties binden op kolomnummer.

ODBC 2.0-kolom ODBC 3.x-kolom
TABLE_QUALIFIER TABLE_CAT
Tabel_Eigenaar TABLE_SCHEM

De volgende tabel bevat de kolommen in de resultatenset. Extra kolommen voorbij kolom 7 (IS_GRANTABLE) kunnen door de driver worden gedefinieerd. Een applicatie zou toegang moeten krijgen tot driver-specifieke kolommen door af te tellen vanaf het einde van de resultaatset in plaats van een expliciete ordinaalpositie te specificeren. Zie Gegevens geretourneerd door Catalogusfuncties voor meer informatie.

Kolomnaam Kolomnummer Gegevenstype Comments
TABLE_CAT (ODBC 1.0) 1 Varchar Catalogusnaam; NULL als het niet van toepassing is op de databron. Als een driver catalogi ondersteunt voor sommige tabellen maar niet voor andere, bijvoorbeeld wanneer de driver gegevens ophaalt uit verschillende DBMS'en, geeft hij een lege string ("") terug voor die tabellen die geen catalogi hebben.
TABLE_SCHEM (ODBC 1.0) 2 Varchar Naam van het schema; NULL als het niet van toepassing is op de databron. Als een driver schema's ondersteunt voor sommige tabellen maar niet voor andere, bijvoorbeeld wanneer de driver gegevens ophaalt uit verschillende DBMS'en, geeft hij een lege string ("") terug voor die tabellen die geen schema's bevatten.
TABLE_NAME (ODBC 1.0) 3 Varchar niet NULL Tabelnaam.
GRANTOR (ODBC 1.0) 4 Varchar Naam van de gebruiker die het privilege heeft verleend; NULL als het niet van toepassing is op de databron.

Voor alle rijen waarin de waarde in de kolom GRANTEE de eigenaar van het object is, is de GRANTOR-kolom "_SYSTEM".
ONTVANGER (ODBC 1.0) 5 Varchar niet NULL Naam van de gebruiker aan wie het privilege is verleend.
PRIVILEGE (ODBC 1.0) 6 Varchar niet NULL Het tafelprivilege. Kan een van de volgende zijn, of een gegevensbron-specifiek privilege.

SELECT: De begunstigde mag gegevens ophalen voor een of meer kolommen van de tabel.

INSERT: De begunstigde mag nieuwe rijen met gegevens voor één of meer kolommen in de tabel invoegen.

UPDATE: De begunstigde mag de gegevens bijwerken in één of meer kolommen van de tabel.

DELETE: De begunstigde mag rijen gegevens uit de tabel verwijderen.

REFERENTIES: De begunstigde mag verwijzen naar één of meer kolommen van de tabel binnen een beperking (bijvoorbeeld een unieke, referentiele of tabelcontrolebeperking).

De reikwijdte van actie die de begunstigde door een gegeven tabelprivilege wordt toegestaan, is afhankelijk van de gegevensbron. Zo kan het UPDATE privilege de ontvanger toestaan om alle kolommen in een tabel bij te werken op één databron en alleen die kolommen waarvoor de schenker het UPDATE privilege heeft op een andere databron.
IS_GRANTABLE (ODBC 1.0) 7 Varchar Geeft aan of de begunstigde het recht aan andere gebruikers mag verlenen; "JA", "NEE", of NULL als het onbekend is of niet van toepassing is op de databron.

Een privilege is ofwel toekenbaar of niet toestaanbaar, maar niet allebei. De resultaatset die door SQLColumnPrivileges wordt teruggegeven, zal nooit twee rijen bevatten waarvoor alle kolommen behalve de kolom IS_GRANTABLE dezelfde waarde bevatten.

Codevoorbeeld

Voor een codevoorbeeld van een vergelijkbare functie, zie SQLColumns.

Voor informatie over Zien!
Een buffer koppelen aan een kolom in een resultatenset SQLBindCol, functie
Verwerking van instructie annuleren SQLCancel, functie
Teruggeven van privileges voor een kolom of kolommen SQLColumnPrivileges-functie
Het teruggeven van de kolommen in een tabel of tabellen SQLColumns-functie
Het ophalen van een enkele rij of een datablok in een vooruit-only richting SQLFetch, functie
Een gegevensblok ophalen of door een resultatenset schuiven SQLFetchScroll, functie
Teruggeven van tabelstatistieken en indexen SQLStatistics-functie
Een lijst van tabellen teruggeven in een databron SQLTables-functie

Zie ook

ODBC-API-verwijzing
ODBC-headerbestanden