N'κόσμε' es (más o menos) equivalente a CAST('κόσμε' AS NVARCHAR2(..))
Con N'κόσμε' dices "tratar la cadena como NVARCHAR". Si escribes solo 'κόσμε' entonces la cadena se trata como VARCHAR . Sin embargo, su NLS_CHARACTERSET es WE8ISO8859P15 que no admite caracteres griegos. Entonces obtienes ? como marcador de posición.
No nos dijiste tu NLS_NCHARACTERSET configuración, lo más probable es que sea compatible con Unicode.
por cierto, no tienes que select ... from dual , simplemente escribe como
l_ec := ASCIISTR('κόσμε');
en PL/SQL.
¿Cuál es tu local NLS_LANG valor, es decir, en su lado del cliente? Lo más probable es que no coincida con la codificación de caracteres de su SQL*Plus. Consulte esta respuesta para obtener más detalles:OdbcConnection que devuelve caracteres chinos como "?"