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

分类:操作系统数据库 | 标签: |

相关日志

评论被关闭!