In questa risposta cercherò di fornire informazioni dalle risorse ufficiali
(1) Il testo letterale N''
N''
viene utilizzato per convertire una stringa in NCHAR
o NVARCHAR2
tipo di dati
Secondo questa documentazione Oracle Oracle - Letterali
La sintassi dei letterali di testo è la seguente:
dove N
o n
specifica il valore letterale utilizzando il set di caratteri nazionale (NCHAR
o NVARCHAR2
dati).
Anche in questo secondo articolo Oracle - Datatypes
La N'String'
viene utilizzato per convertire una stringa in NCHAR
tipo di dati
Dall'articolo sopra elencato:
L'esempio seguente confronta la translated_description
colonna di pm.product_descriptions
tabella con una stringa del set di caratteri nazionale :
SELECT translated_description FROM product_descriptions
WHERE translated_name = N'LCD Monitor 11/PM';
(2) La U'' Letterale
U''
viene utilizzato per gestire i valori letterali di stringa SQL NCHAR in Oracle Call Interface (OCI)
Basato su questa documentazione Oracle Programmazione con Unicode
L'interfaccia di chiamata Oracle (OCI) è l'API di livello più basso utilizzata dal resto dei prodotti di accesso al database lato client. Fornisce un modo flessibile per i programmi C/C++ per accedere ai dati Unicode archiviati in SQL CHAR
e NCHAR
tipi di dati. Utilizzando OCI, è possibile specificare a livello di codice il set di caratteri (UTF-8, UTF-16 e altri) per i dati da inserire o recuperare. Accede al database tramite Oracle Net.
OCI è l'API di livello più basso per l'accesso a un database, quindi offre le migliori prestazioni possibili.
Gestire i valori letterali di stringa NCHAR SQL in OCI
Puoi attivarlo impostando la variabile d'ambiente ORA_NCHAR_LITERAL_REPLACE
a TRUE
. Puoi anche ottenere questo comportamento a livello di codice utilizzando OCI_NCHAR_LITERAL_REPLACE_ON
e OCI_NCHAR_LITERAL_REPLACE_OFF
modalità in OCIEnvCreate()
e OCIEnvNlsCreate()
. Quindi, ad esempio, OCIEnvCreate(OCI_NCHAR_LITERAL_REPLACE_ON)
attiva NCHAR
sostituzione letterale, mentre OCIEnvCreate(OCI_NCHAR_LITERAL_REPLACE_OFF)
si spegne.
[...] Nota che, quando il NCHAR
la sostituzione letterale è attivata, OCIStmtPrepare
e OCIStmtPrepare2
trasformerà N'
letterali con U'
letterali nel testo SQL e archiviare il testo SQL risultante nell'handle dell'istruzione . Pertanto, se l'applicazione utilizza OCI_ATTR_STATEMENT
per recuperare il testo SQL da OCI
handle dell'istruzione, il testo SQL restituirà U'
invece di N'
come specificato nel testo originale .
(3) Rispondi alla tua domanda
Dal punto di vista dei tipi di dati, non vi è alcuna differenza tra le due query fornite