這篇文章給大家分享的是有關(guān)MySQL存儲過程返回多個結(jié)果集的示例的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考。一起跟隨小編過來看看吧。
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:空間域名、虛擬空間、營銷軟件、網(wǎng)站建設(shè)、黃南州網(wǎng)站維護(hù)、網(wǎng)站推廣。
mysql存儲函數(shù)只返回一個值。要開發(fā)返回多個值的存儲過程,需要使用帶有INOUT或OUT參數(shù)的存儲過程。
咱們先來看一個orders表它的結(jié)構(gòu):
mysql> desc orders; +----------------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------------+-------------+------+-----+---------+-------+ | orderNumber | int(11) | NO | PRI | NULL | | | orderDate | date | NO | | NULL | | | requiredDate | date | NO | | NULL | | | shippedDate | date | YES | | NULL | | | status | varchar(15) | NO | | NULL | | | comments | text | YES | | NULL | | | customerNumber | int(11) | NO | MUL | NULL | | +----------------+-------------+------+-----+---------+-------+ 7 rows in set
然后嘞,咱們來看一個存儲過程,它接受客戶編號,并返回發(fā)貨(shipped),取消(canceled),解決(resolved)和爭議(disputed)的訂單總數(shù)(多個結(jié)果集):
DELIMITER $$ CREATE PROCEDURE get_order_by_cust( IN cust_no INT, OUT shipped INT, OUT canceled INT, OUT resolved INT, OUT disputed INT) BEGIN -- shipped SELECT count(*) INTO shipped FROM orders WHERE customerNumber = cust_no AND status = 'Shipped'; -- canceled SELECT count(*) INTO canceled FROM orders WHERE customerNumber = cust_no AND status = 'Canceled'; -- resolved SELECT count(*) INTO resolved FROM orders WHERE customerNumber = cust_no AND status = 'Resolved'; -- disputed SELECT count(*) INTO disputed FROM orders WHERE customerNumber = cust_no AND status = 'Disputed'; END
其實,除IN參數(shù)之外,存儲過程還需要4個額外的OUT參數(shù):shipped, canceled, resolved 和 disputed。 在存儲過程中,使用帶有count函數(shù)的select語句根據(jù)訂單狀態(tài)獲取相應(yīng)的訂單總數(shù),并將其分配給相應(yīng)的參數(shù)。按著上面的sql,我們?nèi)绻褂胓et_order_by_cust存儲過程,可以傳遞客戶編號和四個用戶定義的變量來獲取輸出值。執(zhí)行存儲過程后,我們再使用SELECT語句輸出變量值:
+----------+-----------+-----------+-----------+ | @shipped | @canceled | @resolved | @disputed | +----------+-----------+-----------+-----------+ | 22 | 0 | 1 | 1 | +----------+-----------+-----------+-----------+ 1 row in set
感謝各位的閱讀!關(guān)于mysql存儲過程返回多個結(jié)果集的示例就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!