N'κόσμε' est (plus ou moins) équivalent à CAST('κόσμε' AS NVARCHAR2(..))
Avec N'κόσμε' vous dites "traitez la chaîne comme NVARCHAR". Si vous écrivez simplement 'κόσμε' alors la chaîne est traitée comme VARCHAR . Cependant, votre NLS_CHARACTERSET est WE8ISO8859P15 qui ne prend pas en charge les caractères grecs. Ainsi vous obtenez ? comme espace réservé.
Vous ne nous avez pas indiqué votre NLS_NCHARACTERSET paramètre, cela prend très probablement en charge Unicode.
btw, vous n'avez pas à select ... from dual , écrivez simplement comme
l_ec := ASCIISTR('κόσμε');
en PL/SQL.
Quelle est votre locale NLS_LANG valeur, c'est-à-dire du côté de votre client ? Il est fort probable qu'il ne corresponde pas au codage de caractères de votre SQL*Plus. Voir cette réponse pour plus de détails :OdbcConnection renvoyant des caractères chinois comme "?"