N'κόσμε'
é (mais ou menos) equivalente a CAST('κόσμε' AS NVARCHAR2(..))
Com
N'κόσμε'
você diz "trate a string como NVARCHAR". Se você escrever apenas 'κόσμε'
então a string é tratada como VARCHAR
. No entanto, seu NLS_CHARACTERSET
é WE8ISO8859P15
que não suporta caracteres gregos. Assim você obtém ?
como marcador de posição. Você não nos informou seu
NLS_NCHARACTERSET
configuração, provavelmente isso suporta Unicode. btw, você não precisa
select ... from dual
, basta escrever como l_ec := ASCIISTR('κόσμε');
em PL/SQL.
Qual é o seu local
NLS_LANG
valor, ou seja, ao lado do seu cliente? Provavelmente não corresponde à codificação de caracteres do seu SQL*Plus. Veja esta resposta para mais detalhes:OdbcConnection retornando caracteres chineses como "?"