Ver Mensaje Individual
  #1 (permalink)  
Antiguo 05/05/2015, 08:34
Avatar de blueMuffin010
blueMuffin010
 
Fecha de Ingreso: mayo-2015
Ubicación: Sevilla
Mensajes: 19
Antigüedad: 9 años
Puntos: 0
Pregunta No encuentro el error

Hola, soy nueva en este foro y tengo un problema de SQL.

Tengo las siguientes tablas:

Código SQL:
Ver original
  1. CREATE TABLE TRABAJADOR
  2.                       (
  3.                       NOMBRE VARCHAR(50),
  4.                       APELLIDOS VARCHAR(50),
  5.                       DNI VARCHAR(10),
  6.                       CATEGORIA CHAR(20), CHECK (CATEGORIA IN ('Encargado','Dependiente')),
  7.                       HORAS_EXT INTEGER,
  8.                       NUM_SEG_SOCIAL CHAR(11),
  9.                       SEXO CHAR(20), CHECK(SEXO IN('Hombre','Mujer')),
  10.                       TELEFONO CHAR(9),
  11.                       EMAIL VARCHAR(50),
  12.                       DIRECCION VARCHAR(100),
  13.                       ID_TRABAJADOR INTEGER,
  14.                       PRIMARY KEY(ID_TRABAJADOR)
  15.                       );
Código SQL:
Ver original
  1. CREATE TABLE NOMINA
  2.                    (SALARIO NUMERIC,
  3.                     FECHA_EXPEDICION DATE,
  4.                     ID_NOMINA INTEGER,
  5.                     PRIMARY KEY(ID_NOMINA)
  6.                    );
Código SQL:
Ver original
  1. CREATE TABLE NOM_TRA
  2.                     (ID_NOMINA INTEGER,
  3.                     ID_TRABAJADOR INTEGER,
  4.                     PRIMARY KEY(ID_NOMINA, ID_TRABAJADOR),
  5.                     FOREIGN KEY(ID_NOMINA) REFERENCES NOMINA( ID_NOMINA),
  6.                     FOREIGN KEY(ID_TRABAJADOR)REFERENCES TRABAJADOR( ID_TRABAJADOR)
  7.                     );




Y por otro lado tengo lo siguiente:

Código SQL:
Ver original
  1. CREATE OR REPLACE PROCEDURE horas_extra(nombre VARCHAR,apellidos VARCHAR,dni VARCHAR)
  2. IS res  NUMERIC;
  3. horasx INTEGER;
  4. identi INTEGER;
  5. identificador INTEGER;
  6. identificadorNom INTEGER;
  7. salariox NUMERIC;
  8.  
  9. BEGIN
  10. SELECT ID_TRABAJADOR INTO identi FROM TRABAJADOR WHERE TRABAJADOR.nombre=nombre AND TRABAJADOR.apellidos=apellidos AND TRABAJADOR.dni=dni;
  11.  
  12. SELECT ID_TRABAJADOR INTO identificador FROM NOM_TRA WHERE NOM_TRA.ID_TRABAJADOR=identi;
  13. SELECT ID_NOMINA INTO identificadorNom FROM NOM_TRA WHERE NOM_TRA.ID_TRABAJADOR=id_trabajador;
  14.  
  15. SELECT HORAS_EXT INTO horasx FROM TRABAJADOR WHERE TRABAJADOR.ID_TRABAJADOR=identificador;
  16. SELECT SALARIO INTO salariox FROM NOMINA WHERE NOMINA.ID_NOMINA=identificadorNom;
  17. res:=salariox+horasx*7;
  18.  
  19. UPDATE TRABAJADOR SET salario=res WHERE TRABAJADOR.ID_TRABAJADOR=identi;
  20.  
  21.  
  22. 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.

Última edición por gnzsoloyo; 05/05/2015 a las 08:51