Nesta resposta, tentarei fornecer informações de recursos oficiais
(1) O texto N'' Literal
N'' é usado para converter uma string para NCHAR ou NVARCHAR2 tipo de dados De acordo com esta documentação Oracle Oracle - Literais
A sintaxe dos literais de texto é a seguinte:
![]()
ondeNounespecifica o literal usando o conjunto de caracteres nacional (NCHARouNVARCHAR2dados).
Também neste segundo artigo Oracle - Tipos de dados
O
N'String' é usado para converter uma string para NCHAR tipo de dados Do artigo listado acima:
O exemplo a seguir compara atranslated_descriptioncoluna dopm.product_descriptionstabela com uma string de conjunto de caracteres nacional :
SELECT translated_description FROM product_descriptions WHERE translated_name = N'LCD Monitor 11/PM';
(2) O U'' Literal
U'' é usado para lidar com os literais de string SQL NCHAR no Oracle Call Interface (OCI) Com base nesta documentação da Oracle Programação com Unicode
A interface de chamada da Oracle (OCI) é a API de nível mais baixo que o restante dos produtos de acesso ao banco de dados do lado do cliente usam. Ele fornece uma maneira flexível para programas C/C++ acessarem dados Unicode armazenados em SQLCHAReNCHARtipos de dados. Usando OCI, você pode especificar programaticamente o conjunto de caracteres (UTF-8, UTF-16 e outros) para os dados a serem inseridos ou recuperados. Ele acessa o banco de dados através do Oracle Net.
OCI é a API de nível mais baixo para acessar um banco de dados, por isso oferece o melhor desempenho possível.
Como lidar com literais de string SQL NCHAR em OCI
Você pode ativá-lo definindo a variável de ambienteORA_NCHAR_LITERAL_REPLACEparaTRUE. Você também pode obter esse comportamento programaticamente usando oOCI_NCHAR_LITERAL_REPLACE_ONeOCI_NCHAR_LITERAL_REPLACE_OFFmodos emOCIEnvCreate()eOCIEnvNlsCreate(). Assim, por exemplo,OCIEnvCreate(OCI_NCHAR_LITERAL_REPLACE_ON)ativaNCHARsubstituição literal, enquantoOCIEnvCreate(OCI_NCHAR_LITERAL_REPLACE_OFF)desliga.
[...] Observe que, quando oNCHARsubstituição literal está ativada,OCIStmtPrepareeOCIStmtPrepare2transformaráN'literais comU'literais no texto SQL e armazenar o texto SQL resultante no identificador de instrução . Assim, se o aplicativo usaOCI_ATTR_STATEMENTpara recuperar o texto SQL doOCIidentificador de instrução, o texto SQL retornaráU'em vez deN'conforme especificado no texto original .
(3) Resposta para sua pergunta
Da perspectiva dos tipos de dados, não há diferença entre as duas consultas fornecidas