MySQL儲存過程返回多個值 5

2022-05-04 20:18:28 字數 1626 閱讀 5975

mysql儲存函式只返回乙個值。要開發返回多個值的儲存過程,需要使用帶有inoutout引數的儲存過程。

返回多個值的儲存過程示例:

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,resolveddisputed。 在儲存過程中,使用帶有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 時,不...