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

Almacenamiento de procedimientos

Estas en el tema de Almacenamiento de procedimientos en el foro de Mysql en Foros del Web. Saludos, no comprendo porque en el workbench aparecen errores. Aqui les dejo lo que muestra 21:42:14 CREATE PROCEDURE salarios_procedure(OUT nomb varchar, OUT apell VARCHAR,OUT depar ...
  #1 (permalink)  
Antiguo 02/10/2014, 20:49
 
Fecha de Ingreso: febrero-2013
Ubicación: Cali Colombia
Mensajes: 118
Antigüedad: 11 años, 1 mes
Puntos: 0
Almacenamiento de procedimientos

Saludos, no comprendo porque en el workbench aparecen errores.

Aqui les dejo lo que muestra

21:42:14 CREATE PROCEDURE salarios_procedure(OUT nomb varchar, OUT apell VARCHAR,OUT depar VARCHAR) BEGIN SELECT e.Nombre INTO nomb, e.Apellido INTO apell , nomDepartamento INTO depar FROM cargoxempleado ca INNER JOIN empleados e ON ca.codEmpleado = e.codEmpleado INNER JOIN departamentos d ON d.codDepartamento = ca.codDepartamento WHERE salario > 2000000; END Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' OUT apell VARCHAR,OUT depar VARCHAR) BEGIN SELECT e.Nombre INTO nomb, e.Apelli' at line 1 0,000 sec

y


21:42:14 DELIMITER; Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DELIMITER' at line 1 0,000 sec



Código MySQL:
Ver original
  1. DELIMITER $$
  2. CREATE PROCEDURE salarios_procedure(OUT nomb varchar, OUT apell VARCHAR,OUT depar VARCHAR)
  3.     SELECT e.Nombre INTO nomb , e.Apellido INTO apell , nomDepartamento INTO depar
  4.     FROM cargoxempleado ca
  5.     INNER JOIN empleados e ON ca.codEmpleado = e.codEmpleado
  6.     INNER JOIN departamentos d ON d.codDepartamento = ca.codDepartamento
  7.     WHERE salario > 2000000;
  8.  end$$
  9. DELIMITER;
  #2 (permalink)  
Antiguo 03/10/2014, 03:10
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: Almacenamiento de procedimientos

Por lo pronto, demasiados INTO...

Esta mal escrito. Se ponen primero todos los campos y luego todas las variables, con un solo INTO.
Además de eso, no estás definiendo bien los parámetros del prototipo. Un VARCHAR debe tener indicada su longitud, no basta con poner "VARCHAR", porque no estás programando en C, C#, o Java. Esto es SQL.

Código SQL:
Ver original
  1. DELIMITER $$
  2. CREATE PROCEDURE salarios_procedure(OUT nomb VARCHAR(100), OUT apell VARCHAR(100),OUT depar VARCHAR(100))
  3. BEGIN
  4.     SELECT e.Nombre, e.Apellido, nomDepartamento
  5.     INTO nomb, apell, depar
  6.     FROM cargoxempleado ca
  7.     INNER JOIN empleados e ON ca.codEmpleado = e.codEmpleado
  8.     INNER JOIN departamentos d ON d.codDepartamento = ca.codDepartamento
  9.     WHERE salario > 2000000;
  10.  END$$
  11. DELIMITER ;

Finalmente, el DELIMITER debe tener siempre un espacio antes del delimitador de sentencias nuevo.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 03/10/2014 a las 04:17

Etiquetas: tabla
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:10.