<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
儲存函數和儲存過程的主要區別:
儲存過程和函數能後將複雜的SQL邏輯封裝在一起,應用程式無需關注儲存過程和函數內部複雜的SQL邏輯,而只需要簡單地呼叫儲存過程和函數即可
一組預先編譯的SQL語句的封裝
執行過程:執行過程預先儲存在MySQL伺服器上,需要執行的時候,使用者端只需要向伺服器發出呼叫儲存過程的命令,伺服器端就可以把預先儲存好的這一系列SQL語句全部執行
與檢視,函數的對比:
分類
建立儲存過程
DELIMITER $
CREATE PROCEDURE 儲存過程名 (IN|OUT|INOUT 引數名 引數型別,...)
[characteristics]
BEGIN
儲存過程體
END $DELIMITER ;
DELIMITER $ CREATE PROCEDURE select_all_data() BEGIN SELECT * FROM employees; END $ DELIMITER ;
呼叫儲存過程
CALL select_all_data();
無引數無返回值
DELIMITER // CREATE PROCEDURE avg_employee_salary() BEGIN SELECT AVG(salary) FROM emp; END // DELIMITER ; CALL avg_employee_salary();
無引數有返回值
DELIMITER // CREATE PROCEDURE show_min_salart(OUT ms DOUBLE) BEGIN SELECT MIN(salary) INTO ms FROM emp; END // DELIMITER ; CALL show_min_salart(@ms); SELECT @ms;
有引數無返回值
DELIMITER // CREATE PROCEDURE show_someone_salary(IN empname VARCHAR(20)) BEGIN SELECT salary FROM emp WHERE last_name=empname; END // DELIMITER ; CALL show_someone_salary('Abel'); SET @empname='Abel'; CALL show_someone_salary(@empname)
有引數有返回值
DELIMITER // CREATE PROCEDURE show_someone_salary2(IN empname VARCHAR(20),OUT empsalary DECIMAL(10,2)) BEGIN SELECT salary INTO empsalary FROM emp WHERE last_name=empname; END // DELIMITER ; SET @empname='Abel'; CALL show_someone_salary2(@empname,@empsalary); SELECT @empsalary;
帶INOUT
DELIMITER // CREATE PROCEDURE show_mgr_name(INOUT empname VARCHAR(25)) BEGIN SELECT last_name FROM emp Where employee_id= ( SELECT manager_id FROM emp WHERE last_name=empname ); END // DELIMITER ; SET @empname='Abel'; CALL show_mgr_name(@empname); SELECT @empname;
如何偵錯
通過SELECT語句,把程式執行的中間結果查詢出來,從而偵錯一個SQL語句的正確性。偵錯成功之後,把SELECT語句後移到下一個SQL語句,逐步推進查詢下一個 SQL語句
MySQL允許使用者自定義函數,自定義好了之後,呼叫方式與呼叫MySQL預定義的系統函數一樣
建立儲存函數
CREATE FUNCTION 函數名(引數名 引數型別)
RETURUNS 返回值型別
[characteristics]
BEGIN
函數體 #函數體中肯定有RETURN語句
END
呼叫儲存函數
SELECT 函數名(實參列表)
練習一
DELIMITER // CREATE FUNCTION email_by_name() RETURNS VARCHAR(25) BEGIN RETURN ( SELECT email FROM emp WHERE last_name='Abel' ); END // DELIMITER ; SELECT email_by_name();
練習2
DELIMITER // CREATE FUNCTION email_by_id(emp_id INT) RETURNS VARCHAR(25) BEGIN RETURN ( SELECT email FROM emp WHERE employee_id=emp_id ); END // DELIMITER ; SELECT email_by_id(101); SET @emp_id=102; SELECT email_by_id(@emp_id);
檢視
使用SHOW CREATE 語句 檢視建立資訊
SHOW CREATE PROCEDURE show_mgr_nameG; SHOW CREATE FUNCTION email_by_idG;
使用SHOW STATUS 語句檢視儲存過程和函數的狀態資訊
SHOW PROCEDURE STATUS; SHOW PROCEDURE STATUS LIKE 'show_mgr_name' ; SHOW FUNCTION STATUS LIKE 'email_by_name' ;
從information_schema.Routines表中檢視儲存過程和函數的資訊
SELECT * FROM information_schema.ROUTINES WHERE ROUTINE_NAME='email_by_id' AND ROUTINE_TYPE='FUNCTION'; SELECT * FROM information_schema.ROUTINES WHERE ROUTINE_NAME='show_min_salart' AND ROUTINE_TYPE='PROCEDURE';
修改儲存過程與函數
修改儲存過程或函數,不影響儲存過程或函數功能,只是修改相關特徵,使用ALTER語句實現
ALTER PROCEDURE|FUNCTION 儲存過程或函數名 [characteristic ...]
刪除儲存過程或函數
DROP PROCEDURE|FUNCTION [IF EXISTS] 儲存過程或函數名
到此這篇關於MySQL的儲存函數與儲存過程相關概念與具體範例詳解的文章就介紹到這了,更多相關MySQL的儲存函數與儲存過程內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45