Buenas, tengo las siguientes tablas:
Código SQL:
Ver originalCREATE TABLE TRABAJADOR
(
NOMBRE VARCHAR(50),
APELLIDOS VARCHAR(50),
DNI VARCHAR(10),
CATEGORIA CHAR(20), CHECK (CATEGORIA IN ('Encargado','Dependiente')),
HORAS_EXT INTEGER,
NUM_SEG_SOCIAL CHAR(11),
SEXO CHAR(20), CHECK(SEXO IN('Hombre','Mujer')),
TELEFONO CHAR(9),
EMAIL VARCHAR(50),
DIRECCION VARCHAR(100),
ID_TRABAJADOR INTEGER,
PRIMARY KEY(ID_TRABAJADOR)
);
CREATE TABLE NOMINA
(SALARIO NUMERIC,
FECHA_EXPEDICION DATE,
ID_NOMINA INTEGER,
PRIMARY KEY(ID_NOMINA)
);
CREATE TABLE NOM_TRA
(ID_NOMINA INTEGER,
ID_TRABAJADOR INTEGER,
PRIMARY KEY(ID_NOMINA, ID_TRABAJADOR),
FOREIGN KEY(ID_NOMINA) REFERENCES NOMINA( ID_NOMINA),
FOREIGN KEY(ID_TRABAJADOR)REFERENCES TRABAJADOR( ID_TRABAJADOR)
);
Y quiero hacer un procedure que modificque el salario según las horas extras que haya hecho cada trabajador. Tengo este procedure:
Código SQL:
Ver originalCREATE OR REPLACE PROCEDURE horas_extra(dni VARCHAR)
IS res NUMERIC;
horasx INTEGER;
identi INTEGER;
identificador INTEGER;
identificadorNom INTEGER;
salariox NUMERIC;
BEGIN
SELECT ID_TRABAJADOR INTO identi FROM TRABAJADOR WHERE TRABAJADOR.dni=dni;
SELECT ID_TRABAJADOR INTO identificador FROM NOM_TRA WHERE NOM_TRA.ID_TRABAJADOR=identi;
SELECT ID_NOMINA INTO identificadorNom FROM NOM_TRA WHERE NOM_TRA.ID_TRABAJADOR=id_trabajador;
SELECT HORAS_EXT INTO horasx FROM TRABAJADOR WHERE TRABAJADOR.ID_TRABAJADOR=identificador;
SELECT SALARIO INTO salariox FROM NOMINA WHERE NOMINA.ID_NOMINA=identificadorNom;
res:=salariox+horasx*7;
UPDATE NOMINA SET SALARIO=res WHERE NOMINA.ID_NOMINA=identificadorNom;
END horas_extra;
Cuando pruebo el procedure me sale un error que dice "invalid identifier"--->
Código SQL:
Ver originalError SQL: ORA-00904: "HORAS_EXTRA": invalid identifier
00904. 00000 - "%s: invalid identifier"
*Cause:
*Action:
No sé qué pasa, si alguien me quiere echar una mano se lo agradecería.
Gracias, un saludo.