CREATE TABLE Personn (
pid INTEGER PRIMARY KEY,
iname VARCHAR(50),
gender CHAR(1),
dateOfBirth DATE,
CONSTRAINT person_gender
CHECK (Gender BETWEEN 'f' AND 'm')
);
INSERT INTO Personn VALUES ('1005','john', 'M', 24/apr/1999 );
Error starting at line : 18 in command -
INSERT INTO Personn VALUES ('1005','john', 'M', 24/apr/1999 )
Error at Command Line : 18 Column : 52
Error report -
SQL Error: ORA-00984: column not allowed here
00984. 00000 - "column not allowed here"
*Cause:
*Action:
答案 0 :(得分:2)
INSERT INTO Personn VALUES ('1005','john', 'm', to_date('24/apr/1999', 'dd/mon/yyyy') );
答案 1 :(得分:2)
最好不要假设日期格式已设置为用户会话中的任何特定值 - 否则您可能会在以后遇到意外错误。
相反,在这种情况下使用日期文字:
INSERT INTO Personn VALUES ('1005','john', 'M', DATE '1999-04-24');
此外,如果列的顺序在将来发生变化(这可能在架构重建时发生),则枚举列更安全,例如:
INSERT INTO Personn (pid, iname, gender, dateofbirth)
VALUES (1005,'john', 'm', DATE '1999-04-24');
编辑:修正了pid和性别的文字
答案 2 :(得分:0)
日期应该在引号内 试试这个
INSERT INTO Personn VALUES ('1005','john', 'M', '24/apr/1999')
答案 3 :(得分:-1)
您应该更改插入语句。日期值应以字符串文字形式给出。
所以改变
INSERT INTO Personn VALUES ('1005','john', 'M', 24/apr/1999 );
到
INSERT INTO Personn VALUES (1005, 'john', 'M', '24/apr/1999');
由于您的主键是整数,因此您可以在那里省略单引号。