Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

[SOLUCIONADO] No encuentro el error

Estas en el tema de No encuentro el error en el foro de Bases de Datos General en Foros del Web. Hola, soy nueva en este foro y tengo un problema de SQL. Tengo las siguientes tablas: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código SQL: Ver original CREATE TABLE TRABAJADOR ...
  #1 (permalink)  
Antiguo 05/05/2015, 08:34
Avatar de blueMuffin010  
Fecha de Ingreso: mayo-2015
Ubicación: Sevilla
Mensajes: 19
Antigüedad: 8 años, 11 meses
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
  #2 (permalink)  
Antiguo 05/05/2015, 08:50
Avatar de blueMuffin010  
Fecha de Ingreso: mayo-2015
Ubicación: Sevilla
Mensajes: 19
Antigüedad: 8 años, 11 meses
Puntos: 0
Respuesta: No encuentro el error

vale, ya lo he solucionado, era el UPDATE:
Código SQL:
Ver original
  1. UPDATE NOMINA SET salario=res WHERE NOMINA.ID_NOMINA=identificadorNom;
  #3 (permalink)  
Antiguo 05/05/2015, 08:52
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: No encuentro el error

Que manejador de bases de datos esta usando???
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #4 (permalink)  
Antiguo 05/05/2015, 08:52
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: No encuentro el error

Antes que nada... SQL es un lenguaje de consultas usado por multiples DBMS, no un sistema de bases de datos.

¿Con cuál DBMS estás trabajando?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: bases-de-datos, sql, sql-sentencia
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:38.