在MySQL中創(chuàng)建帶有IN和OUT參數(shù)的存儲(chǔ)過(guò)程的方法
在 MySQL 中創(chuàng)建儲(chǔ)存過(guò)程的語(yǔ)法很難記,除非你經(jīng)常跟儲(chǔ)存過(guò)程打交道,原因很簡(jiǎn)單,語(yǔ)法不是什么小笑話(huà)。如果你通過(guò)命令行控制 MySQL,你需要記住準(zhǔn)確的語(yǔ)法。一個(gè)快速示例可以很好的幫助你做到這點(diǎn)。在MySQL 入門(mén)教程中,我們能夠看到很多關(guān)于如何創(chuàng)建儲(chǔ)存過(guò)程 和如何利用 IN 和 OUT 參數(shù)調(diào)用存儲(chǔ)過(guò)程的示例。這些示例都很簡(jiǎn)單,能夠很好的幫助你理解 MySQL 中創(chuàng)建帶參數(shù)存儲(chǔ)過(guò)程的語(yǔ)法。這些示例已在 MySQL 5.5 中通過(guò)測(cè)試。我們將用下面的雇員表創(chuàng)建并測(cè)試這些儲(chǔ)存過(guò)程:
mysql> select * from employee; +--------+----------+---------+--------+ | emp_id | emp_name | dept_id | salary | +--------+----------+---------+--------+ | 103 | Jack | 1 | 1400 | | 104 | John | 2 | 1450 | | 108 | Alan | 3 | 1150 | | 107 | Ram | NULL | 600 | +--------+----------+---------+--------+ 4 rows in set (0.22 sec)
下面是一個(gè)命令行方式創(chuàng)建MySQL存過(guò)的例子,我們根據(jù) department從employee表中獲取一個(gè)總數(shù),dept_id是department表的 外鍵。
mysql> DELIMITER // mysql> create procedure usp_totalEmployeeByDeparment(IN id INT) -> begin -> select count(*) as total from employee where dept_id = id; -> end// Query OK, 0 rows affected (0.00 sec)
mysql> DELIMITER ;
首先我們改變默認(rèn)的分隔符為“//”來(lái)作為存儲(chǔ)過(guò)程結(jié)束的標(biāo)識(shí),隨后再恢復(fù)默認(rèn)值。使用“usp”前綴是區(qū)分系統(tǒng)存過(guò)過(guò)程和用戶(hù)自定義存儲(chǔ)過(guò)程的最佳實(shí)踐?,F(xiàn)在你可以在MySQL命令行像這樣來(lái)調(diào)用存過(guò):
mysql> call usp_totalEmployeeByDeparment(2); +-------+ | total | +-------+ | 1 | +-------+ 1 row in set (0.06 sec)
創(chuàng)建和使用帶IN和OUT參數(shù)的存儲(chǔ)過(guò)程
在這個(gè)MySQL例子中,我們創(chuàng)建了一個(gè)IN和一個(gè)OUT參數(shù)的存儲(chǔ)過(guò)程 usp_GetEmployeeName。當(dāng)調(diào)用這個(gè)存儲(chǔ)過(guò)程時(shí),你需要傳遞2個(gè)參數(shù):id和name,一個(gè)作為輸入?yún)?shù)id,另外一個(gè)作為輸出參數(shù)返回結(jié)果。
mysql> DELIMITER // mysql> create procedure usp_GetEmployeeName(IN id INT, OUT name VARCHAR(20)) -> begin -> select emp_name into name from employee where emp_id = id; -> end// Query OK, 0 rows affected (0.52 sec) mysql> DELIMITER ; mysql> call usp_GetEmployeeName(103, @name); Query OK, 1 row affected (0.05 sec) 以MySQL命令行方式調(diào)用存過(guò): mysql> select @name; +-------+ | @name | +-------+ | Jack | +-------+ 1 row in set (0.00 sec)
這就是怎樣從命令行方式創(chuàng)建和調(diào)用存儲(chǔ)過(guò)程的所有內(nèi)容,在這個(gè)教程中,我們創(chuàng)建了帶IN和OUT參數(shù)的存儲(chǔ)過(guò)程多個(gè)例子。這是記住MySQL數(shù)據(jù)庫(kù)存過(guò)語(yǔ)法的最好方式。
- 詳解MySQL存儲(chǔ)過(guò)程的創(chuàng)建和調(diào)用
- mysql創(chuàng)建存儲(chǔ)過(guò)程及函數(shù)詳解
- MySQL之存儲(chǔ)過(guò)程按月創(chuàng)建表的方法步驟
- mysql創(chuàng)建存儲(chǔ)過(guò)程實(shí)現(xiàn)往數(shù)據(jù)表中新增字段的方法分析
- MySQL實(shí)現(xiàn)創(chuàng)建存儲(chǔ)過(guò)程并循環(huán)添加記錄的方法
- 深入mysql創(chuàng)建自定義函數(shù)與存儲(chǔ)過(guò)程的詳解
- MySQL動(dòng)態(tài)創(chuàng)建表,數(shù)據(jù)分表的存儲(chǔ)過(guò)程
- MySQL5創(chuàng)建存儲(chǔ)過(guò)程的示例
- 查看MySQL中已經(jīng)創(chuàng)建的存儲(chǔ)過(guò)程及其定義
相關(guān)文章
MySQL SQL優(yōu)化教程之in和range查詢(xún)
這篇文章主要給大家介紹了關(guān)于MySQL SQL優(yōu)化教程之in和range查詢(xún)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12
用于App服務(wù)端的MySQL連接池(支持高并發(fā))
這篇文章主要介紹了用于App服務(wù)端的MySQL連接池,并支持高并發(fā),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2015-12-12
MySQL 實(shí)現(xiàn)樹(shù)的遍歷詳解及簡(jiǎn)單實(shí)現(xiàn)示例
這篇文章主要介紹了MySQL 實(shí)現(xiàn)樹(shù)的遍歷詳解及簡(jiǎn)單實(shí)現(xiàn)示例的相關(guān)資料,這里提供了示例代碼及測(cè)試結(jié)果,需要的朋友可以參考下2017-01-01
詳解監(jiān)聽(tīng)MySQL的binlog日志工具分析:Canal
Canal主要用途是基于MySQL數(shù)據(jù)庫(kù)增量日志解析,提供增量數(shù)據(jù)訂閱和消費(fèi),目前主要支持MySQL。接下來(lái)通過(guò)本文給大家介紹監(jiān)聽(tīng)MySQL的binlog日志工具分析:Canal的相關(guān)知識(shí),感興趣的朋友一起看看吧2020-10-10
計(jì)算機(jī)二級(jí)考試MySQL知識(shí)點(diǎn) mysql alter命令
這篇文章主要為大家詳細(xì)介紹了計(jì)算機(jī)二級(jí)考試MySQL知識(shí)點(diǎn),詳細(xì)介紹了mysql中alter命令的使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-08-08
解決hibernate+mysql寫(xiě)入數(shù)據(jù)庫(kù)亂碼
初次沒(méi)習(xí)hibernate,其中遇到問(wèn)題在網(wǎng)上找的答案與大家共同分享!2009-07-07
解決mysql報(bào)錯(cuò):Data?source?rejected?establishment?of?connect
這篇文章主要給大家介紹了關(guān)于如何解決mysql報(bào)錯(cuò):Data?source?rejected?establishment?of?connection,?message?from?server:?\"Too?many?connectio的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-02-02
手動(dòng)配置phpmyadmin和mysql密碼的兩種方案
這篇文章主要介紹了手動(dòng)配置phpmyadmin和mysql密碼的兩種方案,需要的朋友可以參考下2014-03-03
MySQL里Create Index 能否創(chuàng)建主鍵 Primary Key
MySQL里Create Index 能否創(chuàng)建主鍵 Primary Key2009-07-07

