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

本文详细解析了Oracle数据库中常见的SQL错误,包括双引号使用、数据类型不匹配及字符字段处理等问题,并提供了具体的修正方法。

如果希望对常见的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

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值