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 „?”