ORA-01756: quoted string not properly terminated
2013-02-26检查oracle环境变量NLS_LANG,因为GBK 和 UTF-8的位数不同,所以报错。
env |grep LANG
NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK
LANG=en_US.UTF-8
SQL> select dump('中') from dual;
ERROR:
ORA-01756: quoted string not properly terminated
SQL> select asciistr('中') from dual;
ERROR:
ORA-01756: quoted string not properly terminated
SQL> select asciistr('中国') from dual;
ASCIISTR('中国
---------------
\6D93\E15E\6D57
原因:
1、你输入用的是操作系统的字符集UTF-8
2、但是oracle client和 server的字符集都是GBK
所以对于你的输入oracle不做任何转换(因为2) 但是GBK 和 UTF-8的位数不同,所以报错.
解决办法:
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
SQL> select asciistr('中') from dual;
ASCIISTR('中')
---------------
\4E2D
SQL> select asciistr('中国') from dual;
ASCIISTR('中国')
------------------------------
\4E2D\56FD