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

Error procedure SQL

Estas en el tema de Error procedure SQL en el foro de Oracle en Foros del Web. Buenas, 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 12/05/2015, 09:40
Avatar de blueMuffin010  
Fecha de Ingreso: mayo-2015
Ubicación: Sevilla
Mensajes: 19
Antigüedad: 9 años
Puntos: 0
Pregunta Error procedure SQL

Buenas, 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.                       );
  16.  
  17.  
  18. CREATE TABLE NOMINA
  19.                    (SALARIO NUMERIC,
  20.                     FECHA_EXPEDICION DATE,
  21.                     ID_NOMINA INTEGER,
  22.                     PRIMARY KEY(ID_NOMINA)
  23.                    );
  24.  
  25. CREATE TABLE NOM_TRA
  26.                     (ID_NOMINA INTEGER,
  27.                     ID_TRABAJADOR INTEGER,
  28.                     PRIMARY KEY(ID_NOMINA, ID_TRABAJADOR),
  29.                     FOREIGN KEY(ID_NOMINA) REFERENCES NOMINA( ID_NOMINA),
  30.                     FOREIGN KEY(ID_TRABAJADOR)REFERENCES TRABAJADOR( ID_TRABAJADOR)
  31.                     );

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 original
  1. CREATE OR REPLACE PROCEDURE horas_extra(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.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 NOMINA SET SALARIO=res WHERE NOMINA.ID_NOMINA=identificadorNom;
  20.  
  21.  
  22. END horas_extra;


Cuando pruebo el procedure me sale un error que dice "invalid identifier"--->
Código SQL:
Ver original
  1. Error SQL: ORA-00904: "HORAS_EXTRA": invalid identifier
  2. 00904. 00000 -  "%s: invalid identifier"
  3. *Cause:    
  4. *Action:

No sé qué pasa, si alguien me quiere echar una mano se lo agradecería.
Gracias, un saludo.

Última edición por gnzsoloyo; 12/05/2015 a las 09:57
  #2 (permalink)  
Antiguo 12/05/2015, 09:44
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: Error procedure SQL

prueba con :

Código SQL:
Ver original
  1. CREATE OR REPLACE PROCEDURE horas_extra(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.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 NOMINA SET SALARIO=res WHERE NOMINA.ID_NOMINA=identificadorNom;
  20.  
  21.  
  22. END
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 12/05/2015, 10:18
Avatar de blueMuffin010  
Fecha de Ingreso: mayo-2015
Ubicación: Sevilla
Mensajes: 19
Antigüedad: 9 años
Puntos: 0
Respuesta: Error procedure SQL

Antes que nada gracias por contestarme, veo que tu código es igual que el mío exceptuando el END. He probado a ponerlo como tú y nada, sale el mismo error.
  #4 (permalink)  
Antiguo 12/05/2015, 10:59
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, 5 meses
Puntos: 2658
Respuesta: Error procedure SQL

Cita:
Iniciado por blueMuffin010 Ver Mensaje

Cuando pruebo el procedure me sale un error que dice "invalid identifier"--->
Código SQL:
Ver original
  1. Error SQL: ORA-00904: "HORAS_EXTRA": invalid identifier
  2. 00904. 00000 -  "%s: invalid identifier"
  3. *Cause:    
  4. *Action:

No sé qué pasa, si alguien me quiere echar una mano se lo agradecería.
Gracias, un saludo.
Ese mensaje tiene todo el aspecto de ser un problema de permisos.
Para ejecutar el SP, el usuario debe tener permisos de EXECUTE sobre el mismo, sin lo cual el SP es invisible.
Si tienes los permisos a nivel usuario, pero no los tiene la aplicación (el user de la conexión), también será invisible.
__________________
¿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-general, procedure, sql
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:20.