Identificatori delimitati

In un'istruzione SQL gli identificatori contenenti caratteri speciali o che corrispondono a parole chiave devono essere racchiusi tra virgolette di identificatore; gli identificatori racchiusi in tali caratteri sono noti come identificatori tra virgolette (noti anche come identificatori delimitati in SQL-92). Ad esempio, l'identificatore Contabilità fornitori è racchiuso tra virgolette nell'istruzione SELECT seguente:

SELECT * FROM "Accounts Payable"  

Il motivo degli identificatori tra virgolette è rendere l'istruzione analizzabile. Ad esempio, se Contabilità fornitori non era tra virgolette nell'istruzione precedente, il parser presupporrebbe che ci fossero due tabelle, Contabilità e fornitori, e restituirebbe un errore di sintassi secondo cui non erano separati da una virgola. La virgoletta dell'identificatore è specifica per il driver e viene ripresa con l'opzione SQL_IDENTIFIER_QUOTE_CHAR in SQLGetInfo. Gli elenchi di caratteri speciali e di parole chiave vengono ripresi con le opzioni SQL_SPECIAL_CHARACTERS e SQL_KEYWORDS in SQLGetInfo.

Per sicurezza, le applicazioni interoperabili spesso racchiudono tra virgolette tutti gli identificatori, ad eccezione di quelli per le pseudo-colonne, come la colonna ROWID in Oracle. SQLSpecialColumns restituisce un elenco di pseudo-colonne. Inoltre, se esistono restrizioni specifiche per l'applicazione in cui i caratteri speciali possono essere visualizzati in un nome di oggetto, è consigliabile che le applicazioni interoperabili non usino caratteri speciali in tali posizioni.