我相信我有正确的 SQL plus 命令语法,我已经尝试了不同的方法来做到这一点,但我收到相同的错误消息。我不知道为什么我会收到这个"缺少右括号错误"的任何帮助,我们将不胜感激,提前感谢您。这是我的代码:
create table PUBLISHERS (
NAME varchar2(50) primary key,
address varchar2(50), phone integer(10)
);
integer
数据类型不使用长度限定符。 integer
相当于number(38,0)
。
SQL> ed
Wrote file afiedt.buf
1 create table PUBLISHERS (
2 NAME varchar2(50) primary key,
3 address varchar2(50),
4 phone integer
5* )
SQL> /
Table created.
如果要限制大小,请使用number
SQL> ed
Wrote file afiedt.buf
1 create table PUBLISHERS (
2 NAME varchar2(50) primary key,
3 address varchar2(50),
4 phone number(10)
5* )
SQL> /
Table created.
但是,由于您永远不会对电话号码执行数字运算,虽然您通常可能会对其执行字符串操作以格式化电话号码以显示,但通常将电话号码存储为字符串而不是数字是有意义的。 您可以添加CHECK
约束以确保格式正确。
SQL> ed
Wrote file afiedt.buf
1 create table PUBLISHERS (
2 NAME varchar2(50) primary key,
3 address varchar2(50),
4 phone varchar2(10)
5* )
SQL> /
Table created.
INTEGER
不是 Oracle 内置数据类型。它只是预言机支持的一种 ANSI 格式。INTEGER 的预言机表示形式是 NUMBER (38(。请改用NUMBER
数据类型。
CREATE TABLE publishers(
name VARCHAR2(50) PRIMARY KEY,
address VARCHAR2(50),
phone NUMBER(10)
);
create table doctor_details(doctor_id number(10),
username varchar2(30) not null,
password varchar2(30) not null,
name varchar2(30) not null,
father_name varchar2(30) not null,
gender varchar2(6) not null check(gender in('male','female)),
email varchar2(50) not null,
contact_no number(10) not null,
qualification varchar2(50) not null,
specialization varchar2(5) not null,
date_of_birth date not null,
date_of_joining date not null,
primary key(doctor_id))
错误是缺少右括号