Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySQL enregistre les résultats de EXECUTE dans une variable ?

Si vous souhaitez le faire avec une instruction préparée, vous devez inclure l'affectation de variable dans la déclaration d'origine de l'instruction.

Si vous voulez utiliser une routine stockée, c'est plus facile. Vous pouvez affecter la valeur de retour d'une fonction stockée directement à une variable, et les procédures stockées prennent en charge nos paramètres.

Exemples :

Déclaration préparée :

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;

Fonction stockée :

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 |
+---------+

Procédure stockée :

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 |
+---------+