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

Funciones en MySql

Estas en el tema de Funciones en MySql en el foro de Mysql en Foros del Web. Buen día Estoy comenzando a desarrollar funciones en MySql y no pego una, necesitaría que alguien me ayude a empezar nada mas. Ejemplo un codigo ...
  #1 (permalink)  
Antiguo 19/04/2011, 06:04
Usuario no validado
 
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires
Mensajes: 413
Antigüedad: 15 años
Puntos: 3
Funciones en MySql

Buen día

Estoy comenzando a desarrollar funciones en MySql y no pego una, necesitaría que alguien me ayude a empezar nada mas.

Ejemplo un codigo lo mas simple posible:
DROP FUNCTION IF EXISTS holaMundo;
CREATE FUNCTION holaMundo() RETURNS VARCHAR(20)
BEGIN
RETURN 'HolaMundo';
END
select holaMundo();

Me da el siguiente error:
Error
consulta SQL:

CREATE FUNCTION holaMundo(

) RETURNS VARCHAR( 20 ) BEGIN RETURN 'HolaMundo';



MySQL ha dicho:

#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 '' at line 3

No entiendo que pasa, pasando esto me parece que se ma va a hacer mucho mas facil seguir.
Gracias por la ayuda de Ustedes
  #2 (permalink)  
Antiguo 19/04/2011, 06:33
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: Funciones en MySql

¿Y qué usas para trabajar? ¿PhpMyAdmin? ¿Workbench? ¿MySQL Query Browser?
Pregunto porque me parece que el problema viene por la interfase usada para cargar...
__________________
¿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 19/04/2011, 07:49
Usuario no validado
 
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires
Mensajes: 413
Antigüedad: 15 años
Puntos: 3
Respuesta: Funciones en MySql

Gnzsolooyo:

Lo estoy probando en PhpMyadmin y MySql Query Browser y me da el mismo error.

Me parece que tiene que ver con el BEGIN y END.
Si hago una funcion con una sola instruccion sin BEGIN y END funciona, ejemplo esto anda bien.

DROP FUNCTION IF EXISTS saldo;
CREATE FUNCTION saldo() RETURNS INT
RETURN 1;

Muchas Gracias por la ayuda que pueds brindarme
  #4 (permalink)  
Antiguo 19/04/2011, 08:21
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: Funciones en MySql

El error puede estar sucediendo porque en MySQL Query Browser no puedes usar la ventana de ejecución de SQL para crear una función o un procedimiento almacenado. Tienes que usar un script editado para ello, y en ese caso te recomiendo que uses la herramienta que te provee el propio MQB en el menú Script>Create Stored Procedure / Function.
Esta herramienta te abre una ventana de script con los encabezados necesarios, en lso cuales puedes ver al principio y al final la misma sentencia: DELIMITER
Esta sentencia es necesaria porque los scripts (SP o SF) se deben crear como un único objeto, y para que ello resulte posible se debe modificar la forma de tomar las sentencias momentáneamente. Con DELIMITER se le cambia durante el proceso de carga el terminador de sentencias (que permite a MySQL saber cuándo tiene que comenzar a ejecutar) y de esa forma se puede escribir conjuntos de múltiples sentencias.
Cuando se completa el script se debe cambiar nuevamente el terminador al estándar para que el script se pueda ejecutar.
Este script en esa interfaz se debe cargar simplemente mandándolo a ejecutar por medio del botón "Execute" de la barra de herramientas.

Using MySQL Query Browser



Manual de MySQL Query Browser

En el phpMyAdmin, se usa la ventana de ejecución de SQL, pero no se colocan los DELIMITER, sino que se usa una casilla de texto abajo del área de codificación. El script se escribe completo y sólo se indica cuál será la forma de indicar el fin del mismo. Los dELIMITER los envía directamente el phpMyAdmin.

__________________
¿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 20/04/2011, 13:23
Usuario no validado
 
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires
Mensajes: 413
Antigüedad: 15 años
Puntos: 3
Respuesta: Funciones en MySql

Muchas Gracias gnzsoloyo, entendi lo de los delimiter y ahora logre hacerla.

Etiquetas: funciones
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:07.