Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Crear Funciones Mysql 1

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 7

http://www.nosolocodigo.

com/como-crear-funciones-en-mysql

Cómo crear funciones en MySQL


20/03/2008 by David
Como hemos comentado en el post de procedimientos almacenados, tener nuestras
funciones y procedimientos en MySQL en lugar de de procesar los datos con algún
lenguaje del lado del servidor, como PHP , tiene la ventaja de que viaja menos
información de la base de datos al servidor web , con el consiguiente aumento del
rendimiento y que estas funciones harán que podamos atacar la base de datos desde
cualquier otro lenguaje, como Java o ASP.NET sin tener que volver a procesar los datos
otra vez.

MySQL tiene muchas funciones que podemos usar en nuestro procedimientos


almacenados y consultas, pero en ocasiones podemos necesitar crear nuestras propias
funciones para hacer cosas más especializadas…

Vamos a ver cómo crear funciones en MySQL:

DELIMITER //

CREATE FUCNTION holaMundo() RETURNS VARCHAR(20)


BEGIN
RETURN ‘HolaMundo’;
END
//
Para comprobar que funciona tecleamos lo siguiente en la consola de MySQL :

Select holaMundo();
Lo que devuelve el siguiente resultado :

mysql> select holaMundo()//

+--------------+
| holaMundo() |
+--------------+
| Hola Mundo!! |
+--------------+
1 row in set (0.00 sec)
Para borrar la función que acabamos de crear :

DROP FUNCTION IF EXISTS holaMundo


Uso de las variables en funciones:
Las variables en las funciones se usan de igual manera que en los procedimientos
almacenados, se declaran con la sentencia DECLARE, y se asignan valores con la
sentencia SET.

DELIMITER //
CREATE FUNCTION holaMundo() RETURNS VARCHAR(30)
BEGIN
DECLARE salida VARCHAR(30) DEFAULT 'Hola mundo';
;
SET salida = ‘Hola mundo con variables’;
RETURN salida;
END
//
Esta variable es de ámbito local, y será destruida una vez finalice la función. Cabe
destacar el uso de la sentencia DEFAULT en conjunto con DECLARE, que asigna un valor
por defecto al declarar la variable.

Uso de parámetros en funciones:


DROP FUNCTION IF EXISTS holaMundo

CREATE FUNCTION holaMundo(entrada VARCHAR(20)) RETURNS VARCHAR(20)


BEGIN
DECLARE salida VARCHAR(20);
SET salida = entrada;
RETURN salida;
END
Ahora hemos creado una función que devuelve el mismo valor que le pasamos como
parámetro.

Si tecleamos :

mysql> select holaMundo("nosolocodigo")//


+---------------------------+
| holaMundo("nosolocodigo") |
+---------------------------+
| nosolocodigo |
+---------------------------+
1 row in set (0.00 sec)
Obtenemos como resultado lo mismo que le hemos pasado como párametro, en este
caso “nosolocodigo”

Para finalizar, algo un poco más complejo, vamos a crear una función que acepte un
dividendo y un divisor y haga una división sin usar el operador división:

create function divide(dividendo int,divisor int) returns int


begin
declare aux int;
declare contador int;
declare resto int;
set contador = 0;
set aux = 0;
while (aux + divisor) <= dividendo do
set aux = aux + divisor ;
set contador = contador + 1;
end while;
set resto = dividendo - aux ;
return contador;
end;
//
Para usarlo, simplemente llamaríamos a la función así:

SELECT divide(20,2)
Lo que devolvería 10.

Mirar el post sobre el control de flujo con procedimientos almacenados si no entiendes


esta última función.

¿No tienes una serie de pasos definidos para diseñar bases de


datos? SI, Y QUIERO SOLUCIONARLO

S FUNDAMENTOS
S UI
S CONEXIÓN DE RED
S DATOS
S WEB SERVICES
Crear Funciones En
MySQL
Una función en MySQL es una rutina creada para tomar
unos parámetros, procesarlos y retornar en un salida.
Se diferencian de los procedimientos en las siguientes
características:
▪ Solamente pueden tener parámetros de entrada IN y no
parámetros de salida OUT o INOUT
▪ Deben retornar en un valor con algún tipo de dato definido
▪ Pueden usarse en el contexto de una sentencia SQL
▪ Solo retornan un valor individual, no un conjunto de
registros.

Como Creo Una Función?


Debes usar la sentencia CREATE FUNCTION. La sintaxis
para crear una función es casi idéntica a la de crear un
procedimiento, veamos:
CREATE FUNCTION nombre_función
(parametro1,parametro2,...)
RETURNS tipoDato
[atributos de la rutina]
<bloque de instruccciones>
La única diferencia entre la creación de un procedimiento y
una función es que la sintaxis de una función contiene la
palabra reservada RETURNS para indicar que tipo de dato
se retornará.
Podemos ver un ejemplo?
Claro! Fíjate como obtenemos el factorial de un numero x
ingresado como parámetro:
DELIMITER //

CREATE FUNCTION factorial(x INT) RETURNS INT(11)


BEGIN
DECLARE factorial INT;

-- Guardamos el valor de x
SET factorial = x ;

-- Caso en que x sea menor o igual a 0


IF x <= 0 THEN
RETURN 1;
END IF;

-- Iteramos para obtener multiplicaciones


consecutivas

bucle: LOOP

-- Cada iteracion reducimos en 1 a x


SET x = x - 1 ;

-- Condición de parada del bucle


IF x<1 THEN
LEAVE bucle;
END IF;

-- Factorial parcial
SET factorial = factorial * x ;

END LOOP bucle;

-- Retornamos en el factorial
RETURN factorial;

END//
DELIMITER ;
No confundas RETURNS con RETURN. La primera es para
indicar el tipo de dato de retorno de la función y la segunda
es para retornar el valor en el cuerpo de la función.
 
Puedes mostrar como usar una función en un
SELECT?
 
A continuación crearemos un función que retorne en el
nombre completo de la prioridad de un cliente,
introduciendo como parámetro el campo prioridad.
Creación de la función:
DELIMITER //
CREATE FUNCTION EXT_PRIORIDAD (cliente_prioridad
VARCHAR(5)) RETURNS VARCHAR(20)
BEGIN
CASE cliente_prioridad

WHEN 'A' THEN


RETURN 'Alto';
WHEN 'M' THEN
RETURN 'Medio';
WHEN 'B' THEN
RETURN 'Bajo';
ELSE
RETURN 'NN';
END CASE;
END//
DELIMITER ;
Con ella podremos consultar de la siguiente forma a los
clientes de la base de datos:
SELECT NOMBRE, APELLIDO,
EXT_PRIORIDAD(PRIORIDAD)
FROM CLIENTE;
De esta manera hemos usado nuestra función en un
contexto de consulta. También podemos usar funciones en
las sentencias DELETE y UPDATE, siempre y cuando el
valor retornado sea acorde con las necesidades.
 
Como actualizar una función?
Para actualizar una función usamos el comando ALTER
FUNCTION. Con esta sentencia podemos cambiar los
atributos de la función, pero no podremos cambiar el
cuerpo. Veamos la sintaxis:
ALTER FUNCTION nombre_funcion
[SQL SECURITY {DEFINER|INVOKER}]
[COMMENT descripción ]
Si quisiéramos añadir una descripción a una función que
calcula el promedio de huéspedes diario con respecto a
una fecha llamada promedio_huespedes, hacemos lo
siguiente:
ALTER FUNCTION promedio_huespedes
COMMENT 'Calculo del promedio diario de huéspedes entre una
fecha inicial y una fecha final';
Como borrar una función?
Usando el comando DROP FUNCTION. Simplemente
especificamos el nombre de la función y esta se borrará de
la base de datos. Su sintaxis esta definida de la siguiente
forma:
DROP FUNCTION nombre_funcion
Por ejemplo, para borrar una función que retorna en el
ingreso neto con respecto a todos los tiquetes aéreos
comprados en una sucursal de una aerolínea, llamada
ingreso_neto_sucursal:
DROP FUNCTION ingreso_neto_sucursal;
WP QUADS Content Ad Plugin v. 1.1.2

También podría gustarte