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(または必要な精度)。

他の2つのエラーを診断するのはさらに簡単です:前の行の終わりにコンマがありません:try

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 は、より大きなテーブルの中央にあり、NVARCHAR2() の代わりに NVARCHAR() があります。Oracle が NVARCHAR をサポートしていないことは知りませんでしたが、VARCHAR() の代替バージョンが歴史的に廃止されて久しいため、単純な VARCHAR() の代わりに VARCHAR2() を使用していることは知っています。

于 2010-06-29T18:52:15.593 に答える