04 ORA系列:ORA-00984 列在此处不允许 SQL parse error location
如果希望對常見的Oracle異常ORA報錯解決方案有系統的了解,請看《ORACLE系列異??偨YORA》。
?
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為純數字??梢哉2迦隩estUser表:
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
?
?
總結
以上是生活随笔為你收集整理的04 ORA系列:ORA-00984 列在此处不允许 SQL parse error location的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 03 ORA系列:ORA-00942 表
- 下一篇: 05 ORA系列:ORA-01013 报