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

Como hacer un stored Procedure ?

Estas en el tema de Como hacer un stored Procedure ? en el foro de Mysql en Foros del Web. Que tal amigos, en SQLServer yo lo hago asi pero en Mysql no me funciona @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código SQL: Ver original CREATE PROCEDURE sp_buscar ( ...
  #1 (permalink)  
Antiguo 02/11/2010, 07:54
Avatar de HiToGoRoShi  
Fecha de Ingreso: abril-2008
Mensajes: 849
Antigüedad: 16 años
Puntos: 31
Como hacer un stored Procedure ?

Que tal amigos, en SQLServer yo lo hago asi pero en Mysql no me funciona

Código SQL:
Ver original
  1. CREATE PROCEDURE sp_buscar(@codigo INT)
  2. AS
  3. BEGIN
  4.  SELECT * FROM usuarios WHERE codigo = @codigo
  5. END

Como haria esto en MYSQL, y para ejecutarlo hago asi

Código MySQL:
Ver original
  1. execute sp_buscar 1
  #2 (permalink)  
Antiguo 03/11/2010, 14:29
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
Respuesta: Como hacer un stored Procedure ?

Yo tambien quiero aprender.

;o)
  #3 (permalink)  
Antiguo 11/11/2010, 11:37
Avatar de HiToGoRoShi  
Fecha de Ingreso: abril-2008
Mensajes: 849
Antigüedad: 16 años
Puntos: 31
Respuesta: Como hacer un stored Procedure ?

jejeje como se hace amigos ?
  #4 (permalink)  
Antiguo 11/11/2010, 12: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: Como hacer un stored Procedure ?

Algunos detalles:

1) Los parámetros de los SP no llevan "@", este símbolo se usa solamente para las variables de usuario que son independientes de los SP, dependen de la conexión (sesión de MySQL), y deben ser inicializados para ser usados porque carecen de tipo. Su valor inicial es NULL, por lo que al entrar al SP eso es lo que contienen: NULL.

2) Las variables locales se declaran con DECLARE. Sólo pueden se de salida las variables del prototipo, si y sólo si llevan la cláusula OUT.

3) Si al SP contiene más de una sentencia, deben usarse cambios de delimitador al inicio y al final para permitir que el mismo se cargue en un solo paso.

4) Es buena práctica poner las cláusulas IN/OUT/INOUT a cada variable del prototipo para evitar confusiones.

5) Los SP no se invocan con EXECUTE, sino con CALL.

6) Un SP no puede devolver una tabla para ser usada como fuente de datos de un SELECT. Sí puede devolver una tabla como resultado, y valores en sus variables de prototipo.

7) No se admiten rutinas recursivas en MySQL.

8) Un trigger no puede invocar un SP.

9) Hay algunas sentencias que no se pueden usar en un SP, por ejemplo: LOAD DATA INFILE.

10) Se pueden usar cursores en un SP, pero no se pueden recibir o devolver como variables, y su orden de creación en un SP no es arbitrario. Deben estar después de declarar todas las variables.

Por el resto, yo sugeriría que primero lean el manual de referencia, capítulo dedicado a los SP: MySQL :: 19 - Procedimientos almacenados y funciones.
Luego podemos avanzar sobre el tema.
__________________
¿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 05/06/2011, 14:07
Avatar de mau_87lp  
Fecha de Ingreso: diciembre-2009
Ubicación: La Plata,Buenos Aires.
Mensajes: 72
Antigüedad: 14 años, 4 meses
Puntos: 3
Respuesta: Como hacer un stored Procedure ?

Hola se que estoy respondiendo algo viejo pero lo respondo para que alguien como yo que entre para verlo pueda ver un ejemplo de store porcedure en mysql mas alla de la explicacion que se dejo mas arriva.

Código:

CREATE PROCEDURE sp_buscar(IN codigo INT)
SELECT * 
FROM usuarios 
WHERE codigo = @codigo;
y para llamarlo o ejecutarlo



Código:

CALL sp_buscar(1);

Saludos
  #6 (permalink)  
Antiguo 05/06/2011, 15: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: Como hacer un stored Procedure ?

Lo siento, pero tu SP contiene dos errores.
1) Si usas "codigo" como parámetro de entrada, no puedes usar "@codigo" dentro de la consulta, porque esa no es la misma variable. Si te hubieses molestado en leer mi post ya te habrías dado cuenta.
2) Aún si fuese la misma, esa consulta no es restrictiva, porque si usas el mismo nombre para la columna que para el parámetro, el parser descarta la variable (que tiene menor jerarquía), ye interpreta que te refieres al mismo campo (que tiene mayor jerarqía), con lo que en realidad le estás diciendo que te devuelva todos los registros donde el valor de "codigo" sea igual a sí mismo... o sea, todos los registros.
¿Se entiende?

Para que tu Sp funcione debería estar más o menos así:
Código MySQL:
Ver original
  1. DELIMITER$$
  2. CREATE PROCEDURE sp_buscar(IN vcodigo INT)
  3.      SELECT *
  4.      FROM usuarios
  5.      WHERE codigo = vcodigo;
  6. END$$
  7. 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)

Etiquetas: procedure, stored
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 13:51.