Oracle
 sql >> Base de données >  >> RDS >> Oracle

Équivalent Oracle PLSQL de ASCIISTR(N'str')

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 "?"