N'κόσμε'
е (повече или по-малко) еквивалентен на CAST('κόσμε' AS NVARCHAR2(..))
С N'κόσμε'
казвате "третирайте низа като NVARCHAR". Ако напишете само 'κόσμε'
тогава низът се третира като VARCHAR
. Вашият NLS_CHARACTERSET
обаче е WE8ISO8859P15
който не поддържа гръцки знаци. Така получавате ?
като заместител.
Не ни казахте своя NLS_NCHARACTERSET
настройка, най-вероятно това поддържа Unicode.
Между другото, не е нужно да select ... from dual
, просто напишете като
l_ec := ASCIISTR('κόσμε');
в PL/SQL.
Кой е вашиятместен NLS_LANG
стойност, т.е. от страна на вашия клиент? Най-вероятно не съответства на кодирането на знаците на вашия SQL*Plus. Вижте този отговор за повече подробности:OdbcConnection връща китайски йероглифи като "?"