2010-04-09 227 views

回答

27

如果要用準備好的語句執行此操作,則需要在原始語句聲明中包含變量賦值。

如果你想使用存儲的例程,它會更容易。您可以將存儲函數的返回值直接分配給一個變量,並且存儲過程支持輸出參數。

實例:

預處理語句:

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; 

存儲函數:

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

存儲過程:

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

「設置@invar =(選擇...) '在第一個例子中也會起作用。我已經知道了,但謝謝。 – 2010-04-09 18:35:51

+0

你能分享一下你的想法嗎? – Branislav 2015-05-24 15:38:50

相關問題