Tengo las siguientes tablas:
Código SQL:
Ver original
CREATE 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) );
Código SQL:
Ver original
CREATE TABLE NOMINA (SALARIO NUMERIC, FECHA_EXPEDICION DATE, ID_NOMINA INTEGER, PRIMARY KEY(ID_NOMINA) );
Código SQL:
Ver original
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 por otro lado tengo lo siguiente:
Código SQL:
Ver original
CREATE OR REPLACE PROCEDURE horas_extra(nombre VARCHAR,apellidos VARCHAR,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.nombre=nombre AND TRABAJADOR.apellidos=apellidos AND 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 TRABAJADOR SET salario=res WHERE TRABAJADOR.ID_TRABAJADOR=identi; END horas_extra;
Un PROCEDURE que modifica el salario de los trabajdores para que le sume 7 euros por cada hora extra que hagan, el caso es que cuando lo compilo me dice que hay un error con salario --> "SALARIO" : invalid identifier.
Yo por más vueltas que le doy no le encuentro el error, he comprobado que los nombres y tipos estén bien, no sé qué es lo que falla. Igual es una tontería pero yo ya no veo nada.
Creo que el error está en la línea de UPDATE pero no sé.... en fin, si alguien le ve el error le agradecería que me lo pusiera.
Gracias de antemano.