04 ORA系列:ORA-00984 列在此处不允许 SQL parse error location

如果希望对常见的Oracle异常ORA报错解决方案有系统的了解,请看《ORACLE系列异常总结ORA》。

 

create table t_user(

fid varchar2(44) primary key,

uname varchar2(50) not null,

upassword varchar2(50),

uage number(2,0),

uemail varchar2(50)

);

 

 

1.字符串使用双引号

insert into t_user(fid,uname,upassword,uage,uemail)

("2","test2","test2",45,"456@");

 

报错:

 

错误原因:

Oracle不能识别双引号,默认字符串都采用单引号

修改如下:

insert into t_user(fid,uname,upassword,uage,uemail)

values ('2','test2','test2',45,'456@')

 

 

2.列类型不匹配

 

 

修改为:

insert into t_user(fid,uname,upassword,uage,uemail)

values ('3','test2','test2',45,'456@')

 

3.Oracle对字符和字符串插入数值处理机制

默认情况下,对于字符和字符串类型的数据插入时,如果是数值型字符串,则可以不加引号。如果是非数字类型字符串必须加引号。

数字型字符串:是指字符串内容有纯数字0~9组成,不含其它任何字符

 

create table TestUser (

usercode char(5),

username varchar2(20)

)

 

以下例子请注意第一个字段usercode的值

1、正常例子:usercode为纯数字。可以正常插入TestUser表:

insert into TestUser values (11111,'张三');  

2、异常例子:usercode第一位出现字符A。就会出现ORA-00984列在此处不允许错误:

insert into TestUser values (A1111,'张三');  

3、解决例子:usercode两端加上了单引号。只要给字段值前后加上单引号即可:

insert into TestUser values ('A1111','张三');  

 

总之,对于字符型字段,大家在插入数据时最好在字段值两端加上单引号,这样就可以很好的避免ORA-00984错误了。

------------------------------------------------------------------------

同样,建表时,给字符类型数据采用默认约束时,需要注意引号使用

UserStatus    CHAR(1)                         DEFAULT 'U'                     NOT NULL

 

 

你可能感兴趣的:(Oracle,ORACLE)