En esta respuesta intentaré proporcionar información de fuentes oficiales
(1) El texto N'' Literal
N''
se utiliza para convertir una cadena a NCHAR
o NVARCHAR2
tipo de datos
Según esta documentación de Oracle Oracle - Literales
La sintaxis de los literales de texto es la siguiente:
donde N
o n
especifica el literal usando el juego de caracteres nacional (NCHAR
o NVARCHAR2
datos).
También en este segundo artículo Oracle - Tipos de datos
La N'String'
se utiliza para convertir una cadena a NCHAR
tipo de datos
Del artículo mencionado anteriormente:
El siguiente ejemplo compara la translated_description
columna de pm.product_descriptions
tabla con una cadena de caracteres nacionales :
SELECT translated_description FROM product_descriptions
WHERE translated_name = N'LCD Monitor 11/PM';
(2) La U'' Literal
U''
se utiliza para manejar los literales de cadena SQL NCHAR en Oracle Call Interface (OCI)
Basado en esta documentación de Oracle Programación con Unicode
La interfaz de llamadas de Oracle (OCI) es la API de nivel más bajo que utilizan el resto de los productos de acceso a la base de datos del lado del cliente. Proporciona una forma flexible para que los programas C/C++ accedan a los datos Unicode almacenados en SQL CHAR
y NCHAR
tipos de datos. Con OCI, puede especificar mediante programación el juego de caracteres (UTF-8, UTF-16 y otros) para que los datos se inserten o recuperen. Accede a la base de datos a través de Oracle Net.
OCI es la API de nivel más bajo para acceder a una base de datos, por lo que ofrece el mejor rendimiento posible.
Manejo de literales de cadena SQL NCHAR en OCI
Puede activarlo configurando la variable de entorno ORA_NCHAR_LITERAL_REPLACE
a TRUE
. También puede lograr este comportamiento mediante programación usando OCI_NCHAR_LITERAL_REPLACE_ON
y OCI_NCHAR_LITERAL_REPLACE_OFF
modos en OCIEnvCreate()
y OCIEnvNlsCreate()
. Entonces, por ejemplo, OCIEnvCreate(OCI_NCHAR_LITERAL_REPLACE_ON)
activa NCHAR
reemplazo literal, mientras que OCIEnvCreate(OCI_NCHAR_LITERAL_REPLACE_OFF)
lo apaga.
[...] Tenga en cuenta que, cuando el NCHAR
el reemplazo literal está activado, OCIStmtPrepare
y OCIStmtPrepare2
transformará N'
literales con U'
literales en el texto SQL y almacenar el texto SQL resultante en el identificador de declaración . Por lo tanto, si la aplicación usa OCI_ATTR_STATEMENT
para recuperar el texto SQL del OCI
identificador de declaración, el texto SQL devolverá U'
en lugar de N'
como se especifica en el texto original .
(3) Respuesta a su pregunta
Desde la perspectiva de los tipos de datos, no hay diferencia entre ambas consultas proporcionadas