N'κόσμε' jest (mniej więcej) odpowiednikiem CAST('κόσμε' AS NVARCHAR2(..))
Z N'κόσμε' mówisz „traktuj ciąg jako NVARCHAR”. Jeśli napiszesz po prostu 'κόσμε' wtedy ciąg jest traktowany jako VARCHAR . Jednak Twój NLS_CHARACTERSET to WE8ISO8859P15 który nie obsługuje znaków greckich. W ten sposób otrzymujesz ? jako symbol zastępczy.
Nie powiedziałeś nam swojego NLS_NCHARACTERSET ustawienie, najprawdopodobniej obsługuje Unicode.
btw, nie musisz select ... from dual , po prostu napisz jak
l_ec := ASCIISTR('κόσμε');
w PL/SQL.
Jaki jest Twój lokalny NLS_LANG wartość, czyli po stronie klienta? Najprawdopodobniej nie pasuje do kodowania znaków twojego SQL*Plus. Zobacz tę odpowiedź, aby uzyskać więcej informacji:OdbcConnection zwraca chińskie znaki jako „?”