Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL speichert Ergebnisse von EXECUTE in einer Variablen?

Wenn Sie dies mit einer vorbereiteten Anweisung tun möchten, müssen Sie die Variablenzuweisung in die ursprüngliche Anweisungsdeklaration aufnehmen.

Wenn Sie eine gespeicherte Routine verwenden möchten, ist es einfacher. Sie können den Rückgabewert einer gespeicherten Funktion direkt einer Variablen zuweisen, und gespeicherte Prozeduren unterstützen unsere Parameter.

Beispiele:

Vorbereitete Erklärung:

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;

Gespeicherte Funktion:

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

Gespeicherte Prozedur:

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