第1行出错:ORA-00907:缺少右括号

时间:2013-12-02 07:01:15

标签: sql oracle

我相信我有正确的SQL plus命令语法,我尝试了不同的方法,但我得到了相同的错误信息。我不知道为什么我得到这个“错过正确的括号错误”任何帮助将不胜感激,提前谢谢。 这是我的代码:

create table PUBLISHERS (
NAME varchar2(50) primary key, 
address varchar2(50), phone integer(10) 
);

3 个答案:

答案 0 :(得分:4)

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.

答案 1 :(得分:1)

INTEGER不是Oracle内置数据类型。它只是oracle支持的ANSI格式。 INTEGER的oracle表示是NUMBER(38)。改为使用NUMBER数据类型。

CREATE TABLE publishers(
     name VARCHAR2(50) PRIMARY KEY, 
     address VARCHAR2(50), 
     phone NUMBER(10)
);

答案 2 :(得分:0)

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))

错误是右括号缺失