views:

41

answers:

2

I get this error when trying to run this Oracle SQL script. Any help please?

Error messages

((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 Script

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)
);
+1  A: 

Probably:

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

The other tables have NVARCHAR2(xx). This agrees with the 3 errors grouped at lines 29, 34, 29; line 79 is in the middle of a bigger table and it has an NVARCHAR() instead of NVARCHAR2(). I didn't know that Oracle doesn't support NVARCHAR, but I know it uses VARCHAR2() instead of plain VARCHAR() because there was, historically, some alternative version of VARCHAR() that it has long since deprecated.

Jonathan Leffler
+2  A: 

With a decent text editor it is easy to look at your script with line numbers. This shows that lines 29,34,39 and 71 have something in common:

Descripcion nvarchar(200)

Try Descripcion nvarchar2(200) instead (or whatever precision you need).

It is even easier to diagnose the other two errors: missing comma at the end of the preceding line: 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),
);
APC