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

Ayuda porfavor!

Estas en el tema de Ayuda porfavor! en el foro de Mysql en Foros del Web. Estimados: Alguien sabe el codigo en sql para mysql Version 5 necesito hacer un store procedure ingresar unos datos... porfavor si alguien me puede ayudar ...
  #1 (permalink)  
Antiguo 29/09/2008, 07:42
 
Fecha de Ingreso: septiembre-2008
Mensajes: 8
Antigüedad: 15 años, 7 meses
Puntos: 0
Ayuda porfavor!

Estimados:

Alguien sabe el codigo en sql para mysql Version 5 necesito hacer un store procedure ingresar unos datos... porfavor si alguien me puede ayudar se lo agradeceria en el alma...

Saludos
  #2 (permalink)  
Antiguo 29/09/2008, 07:50
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: Ayuda porfavor!

Lee el manual y después haz las preguntas que necesites, esa es la primera solución que debes intentar:
Capítulo 19. Procedimientos almacenados y funciones.
Porque la cosa no pasa por saber un código, sino entender lo que realmente necesitas hacer y ver si tiene sentido hacerlo en un SP.
Darte un código sin saber si lo comprendes no va a ayudar mucho. Sería mejor que nos indicaras exactamente lo que quieres hacer (no simplemente decir que tienes que ingresar datos, eso lo puedes hacer sin un SP).
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 29/09/2008, 07:54
 
Fecha de Ingreso: septiembre-2008
Mensajes: 8
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Ayuda porfavor!

ok Grcias leere el manual y luego posteo

Saludos
  #4 (permalink)  
Antiguo 29/09/2008, 08:14
 
Fecha de Ingreso: septiembre-2008
Mensajes: 8
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Ayuda porfavor!

Yo hice el store procedure en sql server... pero mi profesor quiere q lo haga en mysql... y no he podido como poder transformar el siguiente codigo para mysql...

CREATE PROCEDURE sp_insertarEmpleado(
@usuario varchar(20),
@password varchar(20),
@rut varchar(8),
@digito varchar(1),
@nombre varchar(20),
@ape_pat varchar(30),
@ape_mat varchar(30),
@tipo varchar(5))
AS
BEGIN
if @rut='' or @rut is null
BEGIN
print "error, debe ingresar RUT"
END
else
BEGIN
INSERT INTO empleado values(@rut,@digito,@nombre,@ape_pat,@ape_mat,@tip o)
INSERT INTO usuario values(@usuario,@password,@rut,@digito,@estado,@ti po)
END
END
END

Es un SP simple que tengo que ingresar datos en esas tablas... ahora como ppuedo hacer algo parecido en mysql?

Gracias
  #5 (permalink)  
Antiguo 29/09/2008, 08:35
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: Ayuda porfavor!

Desde ya te digo que ese código es absolutamente inservible para MySQL, por lo que ni intentes usarlo, por al menos estas cosas:
1. Un store procedure no admite más que un bloque BEGIN ... END, ya que ese bloque indica desde donde inicia y dónde termina el cuerpo completo del código del SP y ninguna otra cosa. Los demás condicionales internos son otros.
2. No existe PRINT dentro de las fucniones y/sentencias de MySQL. Si lo que quieres es una respuesta en un valor existen dos formas:
a) Te lo devuelve e un una variable de entrada, para lo cual debe ser declarada en el prototipo como de salida.
b) te lo devuelve e un campo único, para lo cual se debe invocar un SELECT "Texto de salida", caso en el cual la respuesta del SP es un campo único.
3. El @ se usa en MySQL para crear variables globales, no locales. De hecho, el @ es para usar y crear variables globales dinámicas, por lo que las que lo usan no necesitan ser declaradas en el SP. Simplemente se usan.
4. Las variables de entrada no deben llevar el nombre de los campos, eso procudirá errores de almacenamiento. Tampoco deben iniciar con un "_", porque pueden confundirse con variables de sistema.
5. Las sentencias terminan con un ";". TODAS, menos los condicionales.
6. Si el SP se ingresará por consola, debe incluirse un cambio transitorio de fin de sentencia con DELIMITER para que almacene en el buffer todo el cuerpo de un solo saque y luego volver a cambiarlo por el inicial. En ese caso, el delimitador de sentencias cambiado va sólo en el END del cuerpo y luego el DELIMITER,como verás en el ejemplo.
7. SI la carga se realiza por código de programación (PHP, VB.NET u otro), se carga en un sólo string sin cambios de delimitador.
El cuerpo del SP, usando variables de salida sería mas o menos así:

Código sql:
Ver original
  1. DELIMITER $$
  2. CREATE PROCEDURE sp_insertarEmpleado(
  3. IN Vusuario VARCHAR(20),
  4. IN Vpassword VARCHAR(20),
  5. IN Vrut VARCHAR(8),
  6. IN Vdigito VARCHAR(1),
  7. IN Vnombre VARCHAR(20),
  8. IN Vape_pat VARCHAR(30),
  9. IN Vape_mat VARCHAR(30),
  10. IN Vtipo VARCHAR(5)
  11. OUT salida VARCHAR(20))
  12. AS
  13. BEGIN
  14. IF rut = '' OR rut IS NULL THEN
  15. SET salida = 'error, debe ingresar RUT';
  16. ELSE
  17. INSERT INTO empleado VALUES(rut,digito,nombre,ape_pat,ape_mat,tip o)
  18. INSERT INTO usuario VALUES(Vusuario,Vpassword,Vrut,Vdigito,Vestado,Vti po);
  19. END IF
  20. END $$
  21.  
  22. DELIMITER ;

Con devolución de valor en el SP:
Código sql:
Ver original
  1. DELIMITER $$
  2. CREATE PROCEDURE sp_insertarEmpleado(
  3. IN Vusuario VARCHAR(20),
  4. IN Vpassword VARCHAR(20),
  5. IN Vrut VARCHAR(8),
  6. IN Vdigito VARCHAR(1),
  7. IN Vnombre VARCHAR(20),
  8. IN Vape_pat VARCHAR(30),
  9. IN Vape_mat VARCHAR(30),
  10. IN Vtipo VARCHAR(5))
  11. AS
  12. BEGIN
  13. IF rut = '' OR rut IS NULL THEN
  14. SELECT 'Error, debe ingresar RUT';
  15. ELSE
  16. INSERT INTO empleado VALUES(rut,digito,nombre,ape_pat,ape_mat,tip o)
  17. INSERT INTO usuario VALUES(Vusuario,Vpassword,Vrut,Vdigito,Vestado,Vti po);
  18. END IF
  19. END $$
  20.  
  21. DELIMITER ;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 29/09/2008, 08:58
 
Fecha de Ingreso: septiembre-2008
Mensajes: 8
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Ayuda porfavor!

Gracias compañero... me ayudo mucho tu respuesta.

Saludos
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 11:48.