1

尝试运行此 Oracle SQL 脚本时出现此错误。请问有什么帮助吗?

错误信息

((29,21) expected token:; [ ) * + , - / = > DROP WHERE HAVING AND OR NOT ON JOIN FROM GROUP 
((34,21) expected token:; [ ) * + , - / = > DROP WHERE HAVING AND OR NOT ON JOIN FROM GROUP 
((39,21) expected token:; [ ) * + , - / = > DROP WHERE HAVING AND OR NOT ON JOIN FROM GROUP 
((71,26) expected token:; [ ) * + , - / = > DROP WHERE HAVING AND OR NOT ON JOIN FROM GROUP 
Cargo(90,1) expected token:; ) , DROP NOT ON UNIQUE CONSTRAINT NULL 
Location(97,1) expected token:; ) , DROP NOT ON UNIQUE CONSTRAINT NULL 
pretty print error(pp check error:(1,7)CREATE)

SQL 脚本

create table PerTipoEmpleado(
ID_TipoEmpleado int primary key,
Descripcion nvarchar2(200)
);

create table PerArea(
ID_Area int primary key,
Nombre nvarchar2(200),
ID_AreaPadre int references PerArea(ID_Area)
);

create table PerEstadoCivil(
ID_EstadoCivil int primary key,
Descripcion nvarchar2(40)
);

create table PerTipoContrato(
ID_TipoContrato int primary key,
Descripcion nvarchar2(500)
);

create table PerSexo(
ID_Sexo int primary key,
Descripcion nvarchar2(40)
);

create table PerCargo(
ID_Cargo int primary key,
Descripcion nvarchar(200)
);

create table PerTurno(
ID_Turno int primary key,
Descripcion nvarchar(200)
);

create table PerAFP(
ID_AFP int primary key,
Descripcion nvarchar(200),
Descuento float
);


create table PerTipoSangre(
ID_TipoSangre int primary key,
Descripcion nvarchar2(20)
);

create table PerTipoSeguro(
ID_TipoSeguro int primary key,
Descripcion nvarchar2(300)
);

create table PerEmpleado(
ID_Empleado int primary key,
ID_TipoEmpleado int references PerTipoEmpleado(ID_TipoEmpleado),
ID_Area int references PerArea(ID_Area),
ID_Cargo int references PerCargo(ID_Cargo),
ID_EmpleadoPadre int references PerEmplado(ID_Empleado),
ID_EstadoCivil int references PerEstadoCivil(ID_EstadoCivil),
ID_Sexo int references PerSexo(ID_Sexo),
ID_TipoContrato int references PerTipoContrato(ID_TipoContrato),
ID_FormaPago int references PerFormaPago(ID_FormaPago),
NumeroDeCuenta int,
BancoPago nvarchar2(2000),
ID_TipoSangre int references PerTipoSangre(ID_TipoSangre),
NotificarAccidenteNombre nvarchar2(500),
NotificarAccidenteTelefono nvarchar2(100),
FechaIngreso date,
FechaBaja date,
GradoInstruccion nvarchar(200),
ID_TipoSeguro int references PerTipoSeguro(ID_TipoSeguro),
Nombre nvarchar2(200),
Apellido nvarchar2(200),
Foto nvarchar2(2000),
ID_Turno int references PerTurno(ID_Turno),
ID_AFP int references PerAFP(ID_AFP),
FechaDeNacimiento nvarchar(200),
LugarDeNacimiento nvarchar(500),
Carnet int,
Direccion nvarchar2(200),
Telefono nvarchar2(30),
Celular nvarchar2(30)
);


create table PerHistorialLaboral(
ID_HistorialLaboral int primary key,
ID_Empleado int references PerEmpleado(ID_Empleado)
Cargo nvarchar2(400),
Detalle nvarchar2(400)
);

create table PerCurriculum(
ID_Curriculum int primary key,
ID_Empleado int references PerEmpleado(ID_Empleado)
Location nvarchar2(2000),
TituloProfesional nvarchar2(500),
Habilidades nvarchar2(400),
);

create table PerTipoObservacion(
ID_TipoObservacion int primary key,
Descripcion nvarchar2(200)
);

create table PerObservaciones(
ID_Observaciones int primary key,
ID_Empleado int references PerEmpleado(ID_Empleado),
Detalle nvarchar2(2000)
);
4

2 回答 2

2

使用一个不错的文本编辑器,可以很容易地查看带有行号的脚本。这表明第 29、34、39 和 71 行有一些共同点:

Descripcion nvarchar(200)

尝试Descripcion nvarchar2(200) 代替(或您需要的任何精度)。

诊断另外两个错误更容易:在前一行的末尾缺少逗号:尝试

create table PerHistorialLaboral(
ID_HistorialLaboral int primary key,
ID_Empleado int references PerEmpleado(ID_Empleado),
Cargo nvarchar2(400),
Detalle nvarchar2(400)
);

create table PerCurriculum(
ID_Curriculum int primary key,
ID_Empleado int references PerEmpleado(ID_Empleado),
Location nvarchar2(2000),
TituloProfesional nvarchar2(500),
Habilidades nvarchar2(400),
);
于 2010-06-29T20:48:40.950 回答
1

大概:

create table PerCargo(
ID_Cargo int primary key,
Descripcion nvarchar(200)
);

其他表具有 NVARCHAR2(xx)。这与第 29、34、29 行分组的 3 个错误一致;第 79 行在一个更大的表的中间,它有一个 NVARCHAR() 而不是 NVARCHAR2()。我不知道 Oracle 不支持 NVARCHAR,但我知道它使用 VARCHAR2() 而不是普通的 VARCHAR(),因为从历史上看,它早已弃用了 VARCHAR() 的一些替代版本。

于 2010-06-29T18:52:15.593 回答