如果希望對常見的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