首页 > 解决方案 > 错误:该列允许的值大于指定的精度

问题描述

我正在基于 SQL Developer 创建表,但是,我的代码出现了几个问题:

我的表可以一一建立,但不能整体运行,报错:

ORA-00922: 缺少或无效选项

当我尝试插入值时,出现错误:

ORA-01438: 该列允许的值大于指定的精度

我不知道这两个错误是如何产生的,我的代码看起来一切正常。

create table FACULTY (
faculty_id  VARCHAR(25),
fac_name    VARCHAR(25),
office      VARCHAR(25),
salary      NUMBER(9,2),
primary key (faculty_id)
)

create table student (
student_id  VARCHAR(25),
std_name    VARCHAR(25),
home_phone  CHAR(12),
total_credits   NUMBER,
gpa         NUMBER(1,2),
advisor_id  VARCHAR(25),
PRIMARY KEY (student_id),
foreign key (advisor_id) REFERENCES FACULTY (faculty_id)
)

INSERT INTO 学生表,我已经成功地为 FACULTY 表插入了值;

insert into student
values('111111111', 'Marcus', '21-4748363', 0, 3.11, '90421');

对于第一个问题:

Error report -
ORA-00922: missing or invalid option
00922. 00000 -  "missing or invalid option"

对于第二个问题:

Error starting at line : 40 in command -
insert into student
values('111111111', 'Marcus', '21-4748363', 0, 3.11, '90421')
Error report -
ORA-01438: value larger than specified precision allowed for this column

标签: sqloracleddlsqldatatypes

解决方案


对于第一个问题

;在第一个表定义后使用分号。

对于第二个问题

你应该像这样定义你的表:

create table student (
student_id  VARCHAR(25),
std_name    VARCHAR(25),
home_phone  CHAR(12),
total_credits   NUMBER,
gpa         NUMBER(3,2),
advisor_id  VARCHAR(25),
PRIMARY KEY (student_id),
foreign key (advisor_id) REFERENCES FACULTY (faculty_id)
)

对于 gpa 列,它应该是 NUMBER(3,2) 而不是 NUMBER(1,2) 以支持 3.11 值。


推荐阅读