我在oracle9i以上,插入和修改nchar,nvarchar2等类型字段时正常,但在8i版本遇到一条简单的插入语句,类型有nchar,nvarchar等字段的时候,出现ora-12704,字符集不匹配错误。
在8i,不建议使用NCHAR,NVARCHAR类型
另,8i不支持TIMESTAMP类型
见网文:
如果将列名声明成NCHAR、NVARCHAR2这样的类型,则insert和 select
等语句中的具体值前加N,不能直接按照普通字符类型进行操作。看下面例子:
SQL> create table nchar_tst(name nchar(6),addr
nvarchar2(16),sal number(9,2));
表已创建。
SQL> insert into nchar_tst
values(N'赵元杰',N'北京市海淀区',9999.99);
已创建 1 行。
SQL> select * from nchar_tst where name like
N'赵%';
NAME ADDR SAL
------ ---------------- ----------
赵元杰 北京市海淀区 9999.99
SQL> select * from nchar_tst where name like
'赵%';
select * from nchar_tst where name like '赵%'
*
ERROR 位于第 1 行:
ORA-12704: 字符集不匹配.
提示:虽然Oracle可以使用nchar, nvarchar2
类型来存放字符数据,但建议设计者不要使用NCHAR和NVARCHAR2。因为CHAR和VARCHAR2就能存放汉字。