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

Ayuda con una Funcion

Estas en el tema de Ayuda con una Funcion en el foro de Mysql en Foros del Web. Hola! He estado tratando de hacer una funcion en MYSQL y me ha costado bastante... Hasta ahora solo manejaba pl/sql y el cambio me confundio ...
  #1 (permalink)  
Antiguo 04/08/2010, 18:48
 
Fecha de Ingreso: enero-2010
Mensajes: 88
Antigüedad: 14 años, 3 meses
Puntos: 2
Ayuda con una Funcion

Hola!

He estado tratando de hacer una funcion en MYSQL y me ha costado bastante... Hasta ahora solo manejaba pl/sql y el cambio me confundio un poco.

Lo que he hecho es esto:

Código PHP:
DELIMITER//
DROP FUNCTION IF EXISTS sugerido
CREATE 
FUNCTION sugerido(codigoR CHARRETURNS INT
BEGIN
    
DECLARE fecha_actual DATE;
    DECLARE 
promedioStock INT;
    DECLARE 
stockActual INT;
    DECLARE 
retorno INT;

    
SELECT CURDATE() INTO fecha_actual;

    
SELECT AVG(STOCK_MOMENTOINTO promedioStock
    FROM REPUESTO_HISTORICO
    WHERE CODIGO 
codigoR;

    
SELECT STOCK INTO stockActual
    FROM REPUESTO
    WHERE CODIGO 
codigoR;

    IF 
promedioStock stockActual THEN
        SET retorno 
promedioStock stockActual;
            RETURN 
retorno;
    ELSE
        RETURN 
0;
    
END IF;
END//
DELIMITER
Y me manda este error:

Código PHP:
Error code 1064SQL state 42000You have an error in your SQL syntaxcheck the manual that corresponds to your MySQL server version for the right syntax to use near 'CREATE FUNCTION sugerido(codigoR CHAR) RETURNS INT
BEGIN
    DECLARE fecha_actua' 
at line 2
Line 2
column 1 
No se por que será, si le quito la linea:
Código PHP:
DROP FUNCTION IF EXISTS sugerido 
El error dice que la funcion ya existe.

Pero si intento borrar la funcion asi:

Código PHP:
DROP FUNCTION sugerido 
Dice que la funcion no existe... como que me he confundido un poco . Ayuda por favor
  #2 (permalink)  
Antiguo 05/08/2010, 03: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, 5 meses
Puntos: 2658
Respuesta: Ayuda con una Funcion

Te está dando ese error porque toda sentencia debe estar terminada, y te estás olvidando del cierre en el DROP:
Código MySQL:
Ver original
  1. DELIMITER$$
  2. DROP FUNCTION IF EXISTS sugerido$$
  3. CREATE FUNCTION sugerido(codigoR CHAR) RETURNS INT
  4.     DECLARE fecha_actual DATE;
  5.     DECLARE promedioStock INT;
  6.     DECLARE stockActual INT;
  7.     DECLARE retorno INT;
  8.  
  9.     SELECT CURDATE() INTO fecha_actual;
  10.  
  11.     SELECT AVG(STOCK_MOMENTO) INTO promedioStock
  12.     FROM REPUESTO_HISTORICO
  13.     WHERE CODIGO = codigoR;
  14.  
  15.     SELECT STOCK INTO stockActual
  16.     FROM REPUESTO
  17.     WHERE CODIGO = codigoR;
  18.  
  19.     IF promedioStock > stockActual THEN
  20.         SET retorno = promedioStock - stockActual;
  21.             RETURN retorno;
  22.     ELSE
  23.         RETURN 0;
  24.     END IF;
  25. END$$
  26. 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: funcion
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 10:32.