34

How do I save the results of EXECUTE statement to a variable? Something like

SET a = (EXECUTE stmtl);

1 Answer 1

49

If you want to do this with a prepared statement, then you need to include the variable assignment in the original statement declaration.

If you want to use a stored routine it's easier. You can assign the return value of a stored function directly to a variable, and stored procedures support out parameters.

Examples:

Prepared Statement:

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;

Stored Function:

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

Stored Procedure:

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 |
+---------+
Sign up to request clarification or add additional context in comments.

2 Comments

'set @invar = (select ... )' in the first example will also work. I've figured it out, but thanks.
Could you share your figured out solution?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.