MySQL - Como crear una funcion o procedimiento con retorno de datos

   
Vista:

Como crear una funcion o procedimiento con retorno de datos

Publicado por Alexander (2 intervenciones) el 27/02/2018 23:19:36
Hola a todos.
Soy nuevo en MySQL, inicio un proyecto con MySQL, tengo la siguiente pregunta:
Necesito hacer un procedimiento almacenado o funcion (no se cual en MySQL) que me retorne el resultado de una consulta de una tabla, como json o como arreglo, o como sea que lo retorne MySQL.
La tabla es sencilla:

codigo INT
id Varchar
Descripcion Varchar
Fecha_id date.

Agradezco mucho la ayuda.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Como crear una funcion o procedimiento con retorno de datos

Publicado por Leonardo Josué (400 intervenciones) el 28/02/2018 18:57:51
Hola Alexander:

La diferencia principal entre un SP y una función es que la función sólo puede regresar un valor (por ejemplo un nombre, o la edad de una persona o el número de registros en una tabla por poner algún ejemplo) mientras que con un SP puedes devolver el resultado de la ejecución de una consulta... en tu caso, sería algo así:

supongamos que tienes esta tabla:

1
2
3
4
5
6
7
8
9
10
mysql> SELECT * FROM tabla;
+--------+--------+---------------+------------+
| codigo | id     | Descripcion   | Fecha_id   |
+--------+--------+---------------+------------+
|      1 | uno    | numero uno    | 2018-02-25 |
|      2 | dos    | numero dos    | 2018-02-26 |
|      3 | tres   | numero tres   | 2018-02-27 |
|      4 | cuatro | numero cuatro | 2018-02-28 |
+--------+--------+---------------+------------+
4 rows in set (0.00 sec)

entonces, un SP para devolver el contenido de esta tabla sería así:

1
2
3
4
5
6
7
8
mysql> DELIMITER $$
mysql> CREATE
    ->     PROCEDURE sp_lista_tabla()
    ->     BEGIN
    ->       SELECT * FROM tabla;
    ->     END$$
Query OK, 0 rows affected (0.00 sec)
mysql> DELIMITER ;

Entonces, para ejecutar el SP, simplemente lo haces con un CALL:

1
2
3
4
5
6
7
8
9
10
11
12
mysql> CALL sp_lista_tabla;
+--------+--------+---------------+------------+
| codigo | id     | Descripcion   | Fecha_id   |
+--------+--------+---------------+------------+
|      1 | uno    | numero uno    | 2018-02-25 |
|      2 | dos    | numero dos    | 2018-02-26 |
|      3 | tres   | numero tres   | 2018-02-27 |
|      4 | cuatro | numero cuatro | 2018-02-28 |
+--------+--------+---------------+------------+
4 rows in set (0.00 sec)
 
Query OK, 0 rows affected (0.02 sec)

La ventaja de utilizar un SP es que puedes agregar lógica adicional, como recibir parámetros y filtrar los datos o hacer validaciones, ciclos, condiciones etc., como lo hicieras con un lenguaje de programación, cosa que con un simple SELECT puede resultar complicado.

haz la prueba y nos comentas.

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Revisar política de publicidad