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 връща китайски йероглифи като "?"