Condividi tramite


Argomenti di tipo identificatore

Se una stringa in un argomento di tipo identificatore è racchiusa tra virgolette, il driver rimuove gli spazi vuoti iniziali e finali e tratta letteralmente la stringa all'interno delle virgolette. Se la stringa non è racchiusa tra virgolette, il driver rimuove gli spazi vuoti finali e riduce la stringa in maiuscolo. L'impostazione di un argomento di tipo identificatore su un puntatore Null restituisce SQL_ERROR e SQLSTATE HY009 (uso non valido del puntatore Null), a meno che l'argomento non sia un nome di catalogo e i cataloghi non siano supportati.

Questi argomenti vengono considerati come argomenti di tipo identificatore se l'attributo dell'istruzione SQL_ATTR_METADATA_ID è impostato su SQL_TRUE. In questo caso, l’underscore (_) e il segno di percentuale (%) verranno considerati come il carattere effettivo, non come carattere del criterio di ricerca. Questi argomenti vengono considerati come un argomento ordinario o un argomento del criterio, a seconda dell'argomento, se questo attributo è impostato su SQL_FALSE.

Anche se gli identificatori contenenti caratteri speciali devono essere racchiusi tra virgolette nelle istruzioni SQL, non è necessario che lo siano quando vengono passati come argomenti della funzione catalogo, perché i caratteri di virgolette passati alle funzioni catalogo vengono interpretati letteralmente. Ad esempio, supponiamo che il carattere di virgolette dell'identificatore (specifico del driver e restituito tramite SQLGetInfo) sia una virgoletta doppia ("). La prima chiamata a SQLTables restituisce un set di risultati contenente informazioni sulla tabella “Contabilità fornitori”, mentre la seconda chiamata restituisce informazioni sulla tabella "Contabilità fornitori", che probabilmente non è ciò che si voleva ottenere.

SQLTables(hstmt1, NULL, 0, NULL, 0, "Accounts Payable", SQL_NTS, NULL, 0);  
SQLTables(hstmt2, NULL, 0, NULL, 0, "\"Accounts Payable\"", SQL_NTS, NULL, 0);  

Gli identificatori tra virgolette vengono usati per distinguere un nome di colonna reale da una pseudo-colonna con lo stesso nome, ad esempio ROWID in Oracle. Se "ROWID" viene passato come argomento di una funzione catalogo, la funzione lavorerà con la pseudo-colonna ROWID se esiste. Se la pseudo-colonna non esiste, la funzione lavorerà con la colonna "ROWID". Se “ROWID” viene passato come argomento di una funzione catalogo, la funzione lavorerà con la colonna ROWID.

Per ulteriori informazioni sugli identificatori tra virgolette, vedere Identificatori tra virgolette.