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

Crear procedimiento

Estas en el tema de Crear procedimiento en el foro de Mysql en Foros del Web. HHHolllaaaa!!!!!! Tengo un super problema s q no se nada de mysql y necesito pasar mi base de datos que tengo de sql a mysql, ...
  #1 (permalink)  
Antiguo 07/09/2010, 15:48
 
Fecha de Ingreso: septiembre-2010
Mensajes: 7
Antigüedad: 13 años, 7 meses
Puntos: 0
Crear procedimiento

HHHolllaaaa!!!!!!

Tengo un super problema s q no se nada de mysql y necesito pasar mi base de datos que tengo de sql a mysql, bueno grax a su ayuda solo me falta un procedimiento almacenado.... y no se como hacerlo....plisss!!!!! ayudenme....!!!!!

create proc SP_INSVENTA (@idPago int,@idCliente int)
as
insert into venta values(getdate(),@idPago, @idCliente)
select * from venta
go

muxas graxxxxx.......
  #2 (permalink)  
Antiguo 07/09/2010, 15:57
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: Crear procedimiento

Son varios los errores:
1) Los parámetros de entrada o salida se ponen sin "@".
2) Las variables locales se declaran, pero tampoco llevan "@".
3) Para cargar los SP debe modificarse momentáneamente el delimitador de sentencias y luego restaurarlo.
4) GO no es comando ni sentencia de MySQL.
5) Toda sentencia termina en un delimitador de sentencias.
6) Si hay más de una sentencia en el SP, deben ir en un bloque BEGIN/END.
7) No se pueden anidar los BEGIN/END.
8) El modo de preparar el SP varía con el front-end usado para cargarlo.

Empiezapor decirnos qué front-end estás usando para intentar cargar el 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 07/09/2010, 16:17
 
Fecha de Ingreso: septiembre-2010
Mensajes: 7
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: Crear procedimiento

mmmmmmmmmmmmm

me dejaste en las mismas,,, es que te digo que soy nueva en esto y me esta costando muxisimo trabajo, no se si me podrias ayudar a hacer el procedimiento....si no de todas maneras.....mil grax....
  #4 (permalink)  
Antiguo 07/09/2010, 16:38
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: Crear procedimiento

No me contestaste la pregunta: ¿Qué front-end estás usando para el MySQL?

Si no me dices eso no te puedo dar un ejemplo de stored procedure válido, porque la aplicación a usar puede meterle algunas cosas y hay que conocerla para guiarte.

¿Qué usas?:
- PhpMyadmin.
- Navicat
- MySQL Query Browser
- MySQL Workbench
- Consola de MySQL.
- otra cosa...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 07/09/2010, 17:57
 
Fecha de Ingreso: septiembre-2010
Mensajes: 7
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: Crear procedimiento

mysql Server 5.4
  #6 (permalink)  
Antiguo 07/09/2010, 19:18
Avatar de alexanderm  
Fecha de Ingreso: mayo-2010
Mensajes: 50
Antigüedad: 13 años, 10 meses
Puntos: 3
Respuesta: Crear procedimiento

estoy en las mismas con la gran diferencia que uso phpmyadmin
y hago esto

delimiter //
create procedure tabla(in a varchar(50))
begin
select*from a;
end
//

// tambien probe colocandolas en el delimitador de phpmyadmin
la cosa es que no funciona ge probado varios ejemplos de internet pero nada y esas sentencias son de sql server por eso no funcionan en mysql
  #7 (permalink)  
Antiguo 08/09/2010, 03:15
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: Crear procedimiento

AAngeles: ¿Estás usando la consola de MySQL 5.4 o estás usando el Workbench.
Pregunto eso porque MySQL es un DBMS que no tiene interfases propias (no es SQL Server que viene con un paquete de aplicaciones para interactuar), por lo o usas la consola o usas alguna otra cosa para comunicarte con el servicio de MySQL.
Necesito saberlo, porque si usas el Workbench los SP son fáciles de crear, pero si usas la consola, tengo que darte varias recomendaciones.


Alexanderm: En phpMyadmin, para ingresar un SP debes dejar de lado los DELIMITER. Esos los pone internamente el phpMyadmin.
Escribe el código así:
Código MySQL:
Ver original 
Luego, fíjate que abajo a la izquierda del area de texto hay un Textbox que dice "Delimitador". Allí pon los "$$" que te estoy poniendo.
Tip 1: No uses para delimitadores símbolos que MySQL puede usar para otras cosas, como barras, puntos, barras inversas, guiones o cualquier otro símbolo de uso logico-matemático. Puedes causar problemas al parser y errores de lectura. Fíjate que en los manuales de MySQL se usa el "$$". Por algo es...
Tip 2: Aunque te cargue ese SP, no funcionará porque para crear sentencias dinámicas con variables el procedimiento es diferente. MySQL no es SQL Server. Tiene otra sintaxis para lo que se denomina sentencias preparadas. Busca el tema en este foro. Se ha tratado varias veces.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 08/09/2010, 08:08
Avatar de alexanderm  
Fecha de Ingreso: mayo-2010
Mensajes: 50
Antigüedad: 13 años, 10 meses
Puntos: 3
Respuesta: Crear procedimiento

CREATE PROCEDURE tabla( IN a VARCHAR( 50 ) ) BEGIN SELECT * FROM a; END $$
me dio este error el mismo

Error

consulta SQL: Documentación

CREATE PROCEDURE tabla( IN a VARCHAR( 50 ) ) BEGIN SELECT *
FROM a;

END

MySQL ha dicho: Documentación
#1655 - Cannot create stored routine `tabla`. Check warnings

pero probare con lo otro que me recomendo
  #9 (permalink)  
Antiguo 08/09/2010, 08:23
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: Crear procedimiento

Creo que no leíste lo que te dije:
Cita:
Tip 2: Aunque te cargue ese SP, no funcionará porque para crear sentencias dinámicas con variables el procedimiento es diferente. MySQL no es SQL Server. Tiene otra sintaxis para lo que se denomina sentencias preparadas. Busca el tema en este foro. Se ha tratado varias veces.
Es decir, te aclaré "Aunque te cargue", porque no sabía a priori si te lo cargaría. La respuesta es simple: Así no se hacen esas sentencias...

Verifica lo que te dije:
Cita:
Busca el tema en este foro. Se ha tratado varias veces.
Buscar sentencias preparadas en Foros del Web

Manual de Referencia de MySQL: 13.7. Sintaxis SQL de sentencias preparadas

Este sería un ejemplo:
Código MySQL:
Ver original
  1. DROP PROCEDURE IF EXISTS `PRUEBA` $$
  2. CREATE PROCEDURE `PRUEBA` (IN A VARCHAR(50))
  3.    SET @STM = CONCAT('SELECT * FROM ', A,';');
  4.    PREPARE S FROM @STM;
  5.    EXECUTE S;
  6.    DEALLOCATE PREPARE S;
  7. END $$
__________________
¿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; 08/09/2010 a las 09:15
  #10 (permalink)  
Antiguo 24/10/2010, 12:48
Avatar de alexanderm  
Fecha de Ingreso: mayo-2010
Mensajes: 50
Antigüedad: 13 años, 10 meses
Puntos: 3
Respuesta: Crear procedimiento

Uuummmm sigo con el problema desde el 2008 creo...
Estoy usando mysql query browser con la version 6.0.4 alpha-community-long

DELIMITER $$
DROP PROCEDURE IF EXISTS `blog`.`articulo` $$
CREATE PROCEDURE `blog`.`articulo` ()
BEGIN
select VERSION();
END $$
DELIMITER ;

#1655 - Cannot create stored routine ` articulo`. Check warnings
  #11 (permalink)  
Antiguo 24/10/2010, 17:13
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: Crear procedimiento

Cita:
Uuummmm sigo con el problema desde el 2008 creo...
Estoy usando mysql query browser con la version 6.0.4 alpha-community-long
La versión 6.x es basura. Fue una versión de prueba (nunca instales una versión alpha, sólo sirven para ver los errores y metidas de pata), que eventualmente fue reemplazada por la 5.1.x
No solo es obsoleta, sino que está discontinuada.

Tu problema puede tener varios orígenes, desde no haber seleccionado previamente una base de datos, hasta estar usando la interfase incorrecta, o bien estar usando un user que carezca de permisos para crear SP.
Sin más detalles, no hay forma de saber dónde está el problema.
Por ejemplo, MySQL Query Browser no admite poner el código de un SP en la consola de ejecución, sólo pueden cargarse como scripts.

El SP en sí tiene una sintaxis correcta y esta sería una prueba, hecha con la consola de MySQL:
Código MySQL:
Ver original
  1. mysql> DELIMITER $$
  2. mysql> DROP PROCEDURE IF EXISTS `articulo` $$
  3. Query OK, 0 rows affected, 1 warning (0.00 sec)
  4.  
  5. mysql> CREATE PROCEDURE `articulo` ()
  6.     -> BEGIN
  7.     -> select VERSION();
  8.     -> END $$
  9. Query OK, 0 rows affected (0.00 sec)
  10.  
  11. mysql> DELIMITER ;
  12. mysql> CALL ARTICULO;
  13. +---------------------+
  14. | VERSION()           |
  15. +---------------------+
  16. | 5.0.67-community-nt |
  17. +---------------------+
  18. 1 row in set (0.04 sec)
  19.  
  20. Query OK, 0 rows affected (0.04 sec)

Como podrás ver, se carga correctamente, por lo que el problema no está en el código, sino en otra cosa.
__________________
¿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; 24/10/2010 a las 17:19
  #12 (permalink)  
Antiguo 28/10/2010, 09:52
Avatar de alexanderm  
Fecha de Ingreso: mayo-2010
Mensajes: 50
Antigüedad: 13 años, 10 meses
Puntos: 3
Respuesta: Crear procedimiento

ummmmmmmmmmmmm eso no lo sabia mira
si selecciono la base de datos
muchas gracias por darme esa info descargare la versión buena en estos momentos te lo agradezco mucho y despues digo que paso

Etiquetas: procedimiento
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 21:34.