mysql儲存函式只返回乙個值。要開發返回多個值的儲存過程,需要使用帶有inout
或out
引數的儲存過程。
返回多個值的儲存過程示例:
select*from orders;
原表的資料如上面所示。返回多個值,其實就是多設定幾個inout/out的引數。
sql 如下:
use除yiibaidb;
drop
procedure
ifexists
get_order_by_cust;
--以下儲存過程接受客戶編號,並返回發貨(shipped),取消(canceled),解決(resolved)和爭議(disputed)的訂單總數。
delimiter $$
create
procedure
get_order_by_cust(
in cust_no int
, out shipped
int,
out canceled
int,
out resolved
int,
out disputed
int)
begin
select
count(*) into shipped from orders where customernumber=cust_no and status=
shipped;
select
count(*) into canceled from orders where customernumber=cust_no and status=
canceled;
select
count(*) into resolved from orders where customernumber=cust_no and status=
resolved;
select
count(*) into disputed from orders where customernumber=cust_no and status=
disputed;
end$$
delimiter;
call get_order_by_cust(
141,@shipped,@canceled,@resolved,@disputed
);select
@shipped,@canceled,@resolved,@disputed;
in
引數之外,儲存過程還需要4
個額外的out
引數:shipped
,canceled
,resolved
和disputed
。 在儲存過程中,使用帶有count函式的select語句根據訂單狀態獲取相應的訂單總數,並將其分配給相應的引數。
要使用get_order_by_cust
儲存過程,可以傳遞客戶編號和四個使用者定義的變數來獲取輸出值。
執行儲存過程後,使用select
語句輸出變數值。結果如下:
mysql使用儲存過程返回多個值
可以使用out inout引數型別讓儲存過程返回多個結果值,儲存函式不能勝任,因為只能返回乙個值。比如統計student資料表裡男生和女生人數並通過它的引數返回這兩個計數值,讓呼叫者可以訪問它們 delimiter create procedure count students by out p m...
sql 返回多個值的儲存過程
create function dpm getvalue processmanageid varchar 32 returns temptable table carrydeptid varchar 32 carrydept varchar 100 investmoney float,product...
儲存過程返回值
alter procedure dbo.spdelstudentbyid id int,result int output parameter1 int 5,parameter2 datatype output asset nocount on 不返回計數當 set nocount 為 on 時,不...