0 Bewertungen0% fanden dieses Dokument nützlich (0 Abstimmungen)
241 Ansichten4 Seiten
Las funciones almacenadas de MySQL son similares a los procedimientos almacenados en que son conjuntos de comandos SQL que pueden almacenarse en un servidor. Tener funciones y procedimientos en MySQL en lugar de procesar datos con lenguajes del lado del servidor como PHP mejora el rendimiento al reducir la información que viaja entre la base de datos y el servidor web. Aunque MySQL tiene muchas funciones incorporadas, también podemos crear funciones personalizadas para tareas más especializadas.
Las funciones almacenadas de MySQL son similares a los procedimientos almacenados en que son conjuntos de comandos SQL que pueden almacenarse en un servidor. Tener funciones y procedimientos en MySQL en lugar de procesar datos con lenguajes del lado del servidor como PHP mejora el rendimiento al reducir la información que viaja entre la base de datos y el servidor web. Aunque MySQL tiene muchas funciones incorporadas, también podemos crear funciones personalizadas para tareas más especializadas.
Las funciones almacenadas de MySQL son similares a los procedimientos almacenados en que son conjuntos de comandos SQL que pueden almacenarse en un servidor. Tener funciones y procedimientos en MySQL en lugar de procesar datos con lenguajes del lado del servidor como PHP mejora el rendimiento al reducir la información que viaja entre la base de datos y el servidor web. Aunque MySQL tiene muchas funciones incorporadas, también podemos crear funciones personalizadas para tareas más especializadas.
Las funciones almacenadas de MySQL son similares a los procedimientos
almacenados: son conjunto de comandos SQL que pueden almacenarse en un servidor. Como hemos comentado en el post de procedimientos almacenados, tener nuestras funciones y procedimientos en MySQL en lugar de de procesar los datos con algn lenguaje del lado del servidor, como PHP , tiene la ventaja de que viaja menos informacin de la base de datos al servidor web , con el consiguiente aumento del rendimiento y que estas funciones harn 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 ms especializadas
Las funciones (FUNCTION) difieren de los procedimientos
(PROCEDURES) en:
La lista de parmetros solo puede contener parmetros de entrada. No
estn permitidos parmetros OUT o INOUT, si siquiera es necesario utilizar IN (especificar un parmetro como IN, OUT o INOUT es solo vlido para stored procedures)
La funcin siempre debe retornar un valor del tipo definido en la declaracin
de la funcin. Siendo este tipo de dato, cualquier tipo de dato vlido para MySQL.
Las funciones pueden ser llamadas dentro de sentencias SQL como
SELECTs, INSERTs, etc.
Una funcin no puede devolver un ResultSet.
Sintaxis: [SQL] CREATE FUNCTION nombre_de_funcion ( parametro1, parametro2, ..., parametroX ) RETURNS tipo /* CHAR|INT|FLOAT|DECIMAL|etc */
BEGIN ....... RETURN valor END [/SQL] Ejemplo:
Vamos a ver cmo 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 funcin 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 funcin. Cabe destacar el uso de la sentencia DEFAULT en conjunto con DECLARE, que asigna un valor por defecto al declarar la variable. Uso de parmetros 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 funcin que devuelve el mismo valor que le pasamos como parmetro. 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 prametro, en este caso nosolocodigo Para finalizar, algo un poco ms complejo, vamos a crear una funcin que acepte un dividendo y un divisor y haga una divisin sin usar el operador divisin: 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 llamaramos a la funcin as: SELECT divide(20,2) Lo que devolvera 10.