我用的是XP系统,ORACLE817 ,NLS_CHARACTERSET为ZHS16GBK,我在SQLPLUS下编译一个过程时,报如下错误:
ERROR:
ORA-06550: line 1, column 29:
PLS-00553: character set name is not recognized
ORA-06550: line 0, column 0:
PL/SQL: Compilation unit analysis terminated
这个错误是说字符集设置不一致在网上找了一些方法说要把字符集设置成US7ASCII,但是我试了都不行SQL> update props$ set value$ = 'US7ASCII' where name = 'nls_characterset';
ERROR:
ORA-06550: line 1, column 29:
PLS-00553: character set name is not recognized
ORA-06550: line 0, column 0:
PL/SQL: Compilation unit analysis terminated
SQL> alter database character set US7ASCII;
alter database character set US7ASCII
*
ERROR at line 1:
ORA-12712: new character set must be a superset of old character set现在不知道该怎么做,不想重建数据库,请大家帮帮忙,谢谢!
ERROR:
ORA-06550: line 1, column 29:
PLS-00553: character set name is not recognized
ORA-06550: line 0, column 0:
PL/SQL: Compilation unit analysis terminated
这个错误是说字符集设置不一致在网上找了一些方法说要把字符集设置成US7ASCII,但是我试了都不行SQL> update props$ set value$ = 'US7ASCII' where name = 'nls_characterset';
ERROR:
ORA-06550: line 1, column 29:
PLS-00553: character set name is not recognized
ORA-06550: line 0, column 0:
PL/SQL: Compilation unit analysis terminated
SQL> alter database character set US7ASCII;
alter database character set US7ASCII
*
ERROR at line 1:
ORA-12712: new character set must be a superset of old character set现在不知道该怎么做,不想重建数据库,请大家帮帮忙,谢谢!
ALTER DATABASE CHARACTER SET UTF8; --UTF8是US7ASCII的超集
或者
ALTER DATABASE CHARACTER SET ZHS16GBK;
但是US7ASCII好像是ZHS16GBK的子集
另外,不知道除了US7ASCII还可以设置成什么字符集才可以编译过去
查看服务器端的字符集:
SQL> select userenv('language') from dual;
SIMPLIFIED CHINESE_CHINA.ZHS16GBK
上面的语言是CHINESE,地域是CHINASQL> select parameter, value from nls_database_parameters;
NLS_LANGUAGE AMERICAN
NLS_TERRIRORY AMERICA
上面查出来的语言是AMERICAN,地域是AMERICA, 都是服务器端的设置,为什么会不一样呢??到底哪里影响服务器语言的设置?在注册表中查看客户端的字符集设置:NLS_LANG =AMERICAN_AMERICA.ZHS16GBK 。我的客户端和服务器在同一台电脑上,我试着修改注册表里NLS_LANG的值,发现注册表里这个值跟服务器数据库里没关系,请问这个值到底是设置的什么?