Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Conformità
Versione introdotta: Conformità agli standard ODBC 1.0: ODBC
Sommario
SQLTablePrivileges restituisce un elenco di tabelle e i privilegi associati a ciascuna tabella. Il driver restituisce le informazioni come set di risultati sull'istruzione specificata.
Syntax
SQLRETURN SQLTablePrivileges(
SQLHSTMT StatementHandle,
SQLCHAR * CatalogName,
SQLSMALLINT NameLength1,
SQLCHAR * SchemaName,
SQLSMALLINT NameLength2,
SQLCHAR * TableName,
SQLSMALLINT NameLength3);
Arguments
StatementHandle
[Input] Handle di istruzione.
CatalogName
[Input] Catalogo tavolino. Se un driver supporta cataloghi per alcune tabelle ma non per altre, ad esempio quando il driver recupera dati da diversi DBMS, una stringa vuota ("") indica quelle tabelle che non hanno cataloghi.
CatalogName non può contenere un pattern di ricerca a stringhe.
Se l'attributo dell'istruzione SQL_ATTR_METADATA_ID è impostato su SQL_TRUE, CatalogName viene trattato come un identificatore e il suo caso non è significativo. Se è SQL_FALSE, CatalogName è un argomento ordinario; Viene trattato letteralmente, e il suo caso è significativo. Per altre informazioni, vedere Argomenti nelle Funzioni catalogo.
NameLength1
[Input] Lunghezza nei caratteri di *NomeCatalogo.
SchemaName
[Input] Pattern di ricerca stringa per i nomi degli schemi. Se un driver supporta gli schemi per alcune tabelle ma non per altre, ad esempio quando il driver recupera dati da diversi DBMS, una stringa vuota ("") indica quelle tabelle che non hanno schemi.
Se l'attributo dell'istruzione SQL_ATTR_METADATA_ID è impostato su SQL_TRUE, SchemaName viene trattato come un identificatore e il suo caso non è significativo. Se è SQL_FALSE, Nome dello schema è un argomento di valore di pattern; Viene trattato letteralmente, e il suo caso è significativo.
NameLength2
[Input] Lunghezza nei caratteri di *NomeSchema.
TableName
[Input] Pattern di ricerca stringa per i nomi delle tabelle.
Se l'attributo della SQL_ATTR_METADATA_ID istruzione è impostato su SQL_TRUE, TableName viene trattato come un identificatore e il suo caso non è significativo. Se è SQL_FALSE, TableName è un argomento di valore di pattern; Viene trattato letteralmente, e il suo caso è significativo.
NameLength3
[Input] Lunghezza nei caratteri di *NomeTabella.
Returns
SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_STILL_EXECUTING, SQL_ERROR o SQL_INVALID_HANDLE.
Diagnostics
Quando SQLTablePrivileges restituisce SQL_ERROR o SQL_SUCCESS_WITH_INFO, un valore SQLSTATE associato può essere ottenuto chiamando SQLGetDiagRec con un HandleType di SQL_HANDLE_STMT e un Handle di StatementHandle. La seguente tabella elenca i valori SQLSTATE comunemente restituiti da SQLTablePrivilege e spiega ciascuno nel contesto di questa funzione; la notazione "(DM)" precede le descrizioni degli stati SQL restituite dal Driver Manager. Il codice restituito associato a ogni valore SQLSTATE è SQL_ERROR, a meno che non sia specificato diversamente.
| SQLSTATE | Error | Descrizione |
|---|---|---|
| 01000 | Avviso generale | Messaggio informativo specifico del driver. (La funzione restituisce SQL_SUCCESS_WITH_INFO. |
| 08S01 | Errore del collegamento di comunicazione | Collegamento di comunicazione tra il driver e l'origine dati a cui è stato connesso il driver non è riuscito prima del completamento dell'elaborazione della funzione. |
| 24000 | Stato del cursore non valido | Un cursore era aperto sull'InstructionHandle, e erano stati chiamati SQLFetch o SQLFetchScroll . Questo errore viene restituito dal Driver Manager se SQLFetch o SQLFetchScroll non ha restituito SQL_NO_DATA e viene restituito dal driver se SQLFetch o SQLFetchScroll hanno restituito SQL_NO_DATA. Un cursore era aperto sull'InstructionHandle, ma SQLFetch o SQLFetchScroll non erano stati chiamati. |
| 40001 | Errore di serializzazione | È stato eseguito il rollback della transazione a causa di un deadlock della risorsa con un'altra transazione. |
| 40003 | Completamento istruzione sconosciuto | La connessione associata non è riuscita durante l'esecuzione di questa funzione e non è possibile determinare lo stato della transazione. |
| HY000 | Errore generale | Si è verificato un errore per il quale non è stato specificato SQLSTATE e per il quale non è stato definito alcun SQLSTATE specifico dell'implementazione. Il messaggio di errore restituito da SQLGetDiagRec nel buffer *MessageText descrive l'errore e la relativa causa. |
| HY001 | Errore di allocazione della memoria | Il driver non è riuscito ad allocare memoria necessaria per supportare l'esecuzione o il completamento della funzione. |
| HY008 | Operazione annullata | L'elaborazione asincrona è stata abilitata per StatementHandle. La funzione SQLTablePrivileges veniva chiamata e, prima che completasse l'esecuzione, SQLCancel o SQLCancelHandle veniva chiamato sull'StatementHandle. Poi la funzione SQLTablePrivileges veniva chiamata nuovamente sull'StatementHandle. Veniva chiamata la funzione SQLTablePrivileges e, prima che completasse l'esecuzione, SQLCancel o SQLCancelHandle venivano chiamati sullo StatementHandle da un thread diverso in un'applicazione multithread. |
| HY009 | Uso non valido del puntatore Null | L'attributo SQL_ATTR_METADATA_ID istruzione era impostato su SQL_TRUE, l'argomento CatalogName era un puntatore nullo e l'InfoType SQL_CATALOG_NAME restituisce che i nomi dei cataloghi sono supportati. (DM) L'attributo SQL_ATTR_METADATA_ID istruzione era impostato su SQL_TRUE, e l'argomento SchemaName o TableName era un puntatore nullo. |
| HY010 | Errore della sequenza di funzioni | (DM) È stata chiamata una funzione in esecuzione asincrona per l'handle di connessione associato a StatementHandle. Questa funzione asincrona era ancora in esecuzione quando veniva chiamata la funzione SQLTablePrivileges . (DM) SQLExecute, SQLExecDirect o SQLMoreResults è stato chiamato per StatementHandle e restituito SQL_PARAM_DATA_AVAILABLE. Questa funzione è stata chiamata prima del recupero dei dati per tutti i parametri trasmessi. (DM) Una funzione in esecuzione asincrona (non questa) è stata chiamata per StatementHandle ed è ancora in esecuzione quando questa funzione è stata chiamata. (DM) SQLExecute, SQLExecDirect, SQLBulkOperations o SQLSetPos è stato chiamato per StatementHandle e restituito SQL_NEED_DATA. Questa funzione è stata chiamata prima dell'invio dei dati per tutti i parametri o le colonne data-at-execution. |
| HY013 | Errore di gestione della memoria | Impossibile elaborare la chiamata di funzione perché non è stato possibile accedere agli oggetti di memoria sottostanti, probabilmente a causa di condizioni di memoria insufficiente. |
| HY090 | Lunghezza della stringa o del buffer non valida | (DM) Il valore di uno degli argomenti della lunghezza del nome era inferiore a 0 ma non uguale a SQL_NTS. Il valore di uno degli argomenti della lunghezza del nome superava il valore massimo della lunghezza per il qualificatore o nome corrispondente. |
| HY117 | La connessione viene sospesa a causa dello stato sconosciuto della transazione. Sono consentite solo funzioni disconnesse e di sola lettura. | (DM) Per maggiori informazioni sullo stato sospeso, vedi SQLEndTran Function. |
| HYC00 | Funzionalità facoltativa non implementata | È stato specificato un catalogo, e il driver o la sorgente dati non supportano i cataloghi. È stato specificato uno schema, e il driver o la sorgente dati non supportano gli schemi. È stato specificato un pattern di ricerca a stringhe per lo schema della tabella, il nome della tabella o il nome della colonna, e la sorgente dati non supporta schemi di ricerca per uno o più di questi argomenti. La combinazione delle impostazioni correnti degli attributi delle istruzioni SQL_ATTR_CONCURRENCY e SQL_ATTR_CURSOR_TYPE non è supportata dal driver o dall'origine dati. L'attributo di istruzione SQL_ATTR_USE_BOOKMARKS è stato impostato su SQL_UB_VARIABLE e l'attributo dell'istruzione SQL_ATTR_CURSOR_TYPE è stato impostato su un tipo di cursore per cui il driver non supporta i segnalibri. |
| HYT00 | Timeout scaduto | Periodo di timeout della query scaduto prima che l'origine dati restituisca il set di risultati. Il periodo di timeout viene impostato tramite SQLSetStmtAttr, SQL_ATTR_QUERY_TIMEOUT. |
| HYT01 | Il timeout della connessione è scaduto | Periodo di timeout della connessione scaduto prima che l'origine dati rispondesse alla richiesta. Il periodo di timeout della connessione viene impostato tramite SQLSetConnectAttr, SQL_ATTR_CONNECTION_TIMEOUT. |
| IM001 | Il driver non supporta questa funzione | (DM) Il driver associato a StatementHandle non supporta la funzione. |
| IM017 | Il polling è disabilitato in modalità di notifica asincrona | Ogni volta che viene usato il modello di notifica, il polling è disabilitato. |
| IM018 | SQLCompleteAsync non è stato chiamato per completare l'operazione asincrona precedente su questo handle. | Se la chiamata di funzione precedente sull'handle restituisce SQL_STILL_EXECUTING e se la modalità di notifica è abilitata, è necessario chiamare SQLCompleteAsync sull'handle per eseguire la post-elaborazione e completare l'operazione. |
Comments
Gli argomenti SchemaName e TableName accettano i pattern di ricerca. Per maggiori informazioni sui modelli di ricerca validi, vedi Pattern Value Arguments.
SQLTablePrivileges restituisce i risultati come insieme di risultati standard, ordinati da TABLE_CAT, TABLE_SCHEM, TABLE_NAME, PRIVILEGE e GRANTEE.
Per determinare la lunghezza effettiva delle colonne TABLE_CAT, TABLE_SCHEM e TABLE_NAME, un'applicazione può chiamare SQLGetInfo con le opzioni SQL_MAX_CATALOG_NAME_LEN, SQL_MAX_SCHEMA_NAME_LEN e SQL_MAX_TABLE_NAME_LEN.
Note
Per altre informazioni sull'utilizzo generale, gli argomenti e i dati restituiti delle funzioni del catalogo ODBC, vedere Funzioni del catalogo.
Le colonne seguenti sono state rinominate per ODBC 3.x. I cambiamenti nel nome delle colonne non influiscono sulla retrocompatibilità perché le applicazioni si assegnano per numero di colonna.
| Colonna ODBC 2.0 | Colonna ODBC 3.x |
|---|---|
| TABLE_QUALIFIER | TABLE_CAT |
| PROPRIETARIO_TABELLA | TABLE_SCHEM |
Nella tabella seguente sono elencate le colonne nel set di risultati. Colonne aggiuntive oltre la colonna 7 (IS_GRANTABLE) possono essere definite dal driver. Un'applicazione dovrebbe accedere alle colonne specifiche del driver contando alla rovescia dalla fine del set di risultati invece di specificare una posizione ordinale esplicita. Per altre informazioni, vedere Dati restituiti dalle funzioni del catalogo.
| Nome della colonna | Numero di colonna | Tipo di dati | Comments |
|---|---|---|---|
| TABLE_CAT (ODBC 1.0) | 1 | Varchar | Nome del catalogo; NULL se non applicabile alla fonte dati. Se un driver supporta cataloghi per alcune tabelle ma non per altre, ad esempio quando il driver recupera dati da diversi DBMS, restituisce una stringa vuota ("") per quelle tabelle che non hanno cataloghi. |
| TABLE_SCHEM (ODBC 1.0) | 2 | Varchar | Nome dello schema; NULL se non applicabile alla fonte dati. Se un driver supporta gli schemi per alcune tabelle ma non per altre, ad esempio quando il driver recupera dati da diversi DBMS, restituisce una stringa vuota ("") per quelle tabelle che non hanno schemi. |
| TABLE_NAME (ODBC 1.0) | 3 | Varchar non NULL | Nome della tabella. |
| GRANTOR (ODBC 1.0) | 4 | Varchar | Nome dell'utente che ha concesso il privilegio; NULL se non applicabile alla fonte dati. Per tutte le righe in cui il valore nella colonna GRANTE è il proprietario dell'oggetto, la colonna GRANTOR sarà "_SYSTEM". |
| GRANTEE (ODBC 1.0) | 5 | Varchar non NULL | Nome dell'utente a cui è stato concesso il privilegio. |
| PRIVILEGIO (ODBC 1.0) | 6 | Varchar non NULL | Il privilegio del tavolo. Può essere uno dei seguenti oppure un privilegio specifico della fonte dati. SELECT: Il beneficiario può recuperare i dati di una o più colonne della tabella. INSERT: Il beneficiario è autorizzato a inserire nuove righe contenenti dati per una o più colonne nella tabella. UPDATE: Al beneficiario è permesso aggiornare i dati in una o più colonne della tabella. DELETE: Il beneficiario può eliminare righe di dati dalla tabella. RIFERIMENTI: Il beneficiario può fare riferimento a una o più colonne della tabella all'interno di un vincolo (ad esempio, un vincolo unico, referenziale o di controllo della tabella). L'ambito d'azione consentito al beneficiario da un dato privilegio di tabella dipende dalla fonte dei dati. Ad esempio, il UPDATE privilegio potrebbe permettere al beneficiario di aggiornare tutte le colonne di una tabella su una fonte dati e solo quelle colonne per le quali il concedente ha il UPDATE privilegio su un'altra fonte dati. |
| IS_GRANTABLE (ODBC 1.0) | 7 | Varchar | Indica se il beneficiario è autorizzato a concedere il privilegio ad altri utenti; "SÌ", "NO" o NULL se sconosciuto o non applicabile alla fonte dati. Un privilegio è o concessibile o non concessibile, ma non entrambi. L'insieme di risultati restituito da SQLColumnPrivileges non conterrà mai due righe per le quali tutte le colonne tranne la colonna IS_GRANTABLE contengono lo stesso valore. |
Esempio di codice
Per un esempio di codice di una funzione simile, vedi SQLColumns.
Funzioni correlate
| Per informazioni su | Vedi |
|---|---|
| Associazione di un buffer a una colonna in un set di risultati | Funzione SQLBindCol |
| Annullamento dell'elaborazione delle istruzioni | Funzione SQLCancel |
| Restituzione dei privilegi per una colonna o colonne | Funzione SQLColumnPrivileges |
| Restituire le colonne in una o più tabelle | Funzione SQLColumns |
| Recupero di una singola riga o di un blocco di dati in direzione solo in avanti | Funzione SQLFetch |
| Recupero di un blocco di dati o scorrimento di un set di risultati | Funzione SQLFetchScroll |
| Restituzione delle statistiche e indici delle tabelle | Funzione SQLStatistics |
| Restituire un elenco di tabelle in una sorgente di dati | Funzione SQLTables |