sql >> Base de Datos >  >> RDS >> Mysql

MySQL guarda los resultados de EXECUTE en una variable?

Si desea hacer esto con una declaración preparada, debe incluir la asignación de variables en la declaración de la declaración original.

Si desea utilizar una rutina almacenada, es más fácil. Puede asignar el valor de retorno de una función almacenada directamente a una variable, y los procedimientos almacenados admiten parámetros.

Ejemplos:

Declaración preparada:

PREPARE square_stmt from 'select pow(?,2) into @outvar';
set @invar = 1;
execute square_stmt using @invar;
select @outvar;
+---------+
| @outvar |
+---------+
|       1 |
+---------+
DEALLOCATE PREPARE square_stmt;

Función almacenada:

delimiter $$
create function square_func(p_input int) returns int
begin
  return pow(p_input,2);
end $$
delimiter ;

set @outvar = square_func(2);
select @outvar;
+---------+
| @outvar |
+---------+
|       4 |
+---------+

Procedimiento almacenado:

delimiter $$
create procedure square_proc(p_input int, p_output int)
begin
  set p_output = pow(p_input,2);
end $$
delimiter ;

set @outvar = square_func(3);
call square_proc(2,@outvar);
select @outvar;
+---------+
| @outvar |
+---------+
|       9 |
+---------+