天天看點

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,"[email protected]");

報錯:

錯誤原因:

Oracle不能識别雙引号,預設字元串都采用單引号

修改如下:

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

values ('2','test2','test2',45,'[email protected]')

2.列類型不比對

修改為:

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

values ('3','test2','test2',45,'[email protected]')

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