2010-04-09 17 views

Respuesta

27

Si desea hacer esto con una declaración preparada, entonces debe incluir la asignación de la variable en la declaración de 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 almacenado:

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

'establecen @invar = (seleccione ...) 'en el primer ejemplo también funcionará. Lo he descubierto, pero gracias. –

+0

¿Podría compartir su solución resuelta? – Branislav

Cuestiones relacionadas