domingo, noviembre 16, 2008

Procedimientos almacenados (stored procedures) en MySQL (2)

Para ello crearemos primero el esqueleto del cuerpo en un script de SQL que llamaremos spVenta.sql, al procedimiento almacenado que crearemos en éste lo llamaremos vendeProducto. De tal forma que nuestro script quedará así:

USE prueba;

DELIMITER //

CREATE PROCEDURE vendeProducto

BEGIN

END

//

Expliquemos de qué se trata, la primera línea contiene la sentencia USE prueba; lo que le indica a MySQL que utilice la base de datos llamada prueba, notarán que es la única línea que es cerrada con un punto y coma, éste signo de puntuación (;) es utilizado de manera predeterminada por MySQL para separar sentencias o bloques de código.

La segunda línea DELIMITER // le indica a MySQL que substituya al punto y coma (;) como separador de código y en su lugar utilice la doble diagonal (//), se pueden utilizar distintos delimitadores, por ejemplo, el producto phpMyAdmin utiliza en su lugar un doble signo de pesos ($$) en lugar de la doble diagonal; el por qué hemos substituido el punto y coma por una doble diagonal se debe a que dentro de los procedimientos almacenados las instrucciones se separan precisamente con punto y coma, lo que ocasionaría, de no cambiar el delimitador, que el motor de base de datos se confunda y envíe error al tratar de crear un procedimiento almacenado al no saber donde comienza y dónde termina éste.

La tercera línea CREATE PROCEDURE vendeProducto es la que en realidad inicia el cuerpo del procedimiento almacenado, siendo vendeProducto el nombre del mismo, posteriormente las siguientes dos líneas BEGIN y END contendrán el código del procedimiento y la última línea con la doble diagonal indicará al motor de base de datos el final del bloque de código que esperamos que procese.

En este momento deberemos cargar los scripts schema.sql y spVenta.sql, para ello iniciaremos una sesión desde la consola de MySQL y ejecutaremos las siguientes instrucciones una vez que hayamos ingresado.

Source schema.sql;

Source spVenta.sql;

4 comentarios:

Nicolas dijo...

Hola. No me funciona en phpmyadmin. Me sale esto:

#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 'DELIMITER ||

CREATE PROCEDURE vendeProducto

BEGIN
select * from comentari' at line 1

Fido dijo...

En phpmyadmin no es necesario que incluyas esa línea en la parte del código, en la ventan en la que escribes el código SQL revisa en la parte de abajo, aparece una cuadro de texto que dice "Delimitador" y en ella substituye el punto y coma (;) que viene por defecto por tus dos pipes que estás utilizando ||

Espero que ésto te sirva, sino pues nada más vuelve a postear

Anónimo dijo...

I almost never drop responses, however i did some searching and wound up here "Procedimientos almacenados (stored procedures) en MySQL (2)".
And I actually do have a couple of questions for you if it's allright. Could it be only me or does it seem like some of the remarks come across as if they are written by brain dead folks? :-P And, if you are writing at other online sites, I would like to follow anything new you have to post. Would you list of all of all your community sites like your twitter feed, Facebook page or linkedin profile?

Here is my webpage ... instagram

Anónimo dijo...

Hello there! This is my first visit to your blog! We are a collection of volunteers and starting
a new initiative in a community in the same niche. Your blog provided
us valuable information to work on. You have done a wonderful job!


Stop by my web blog: buy followers on instagram