<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
儲存過程和函數就是資料器將一些處理封裝起來,呼叫
呼叫儲存過程只需要使用CALL,然後指定儲存名稱和引數,引數可以是IN、OUT和INOUT
呼叫儲存函數只需要使用SELECT,指定名稱和引數,儲存函數必須有返回值,引數只能是IN
create procedure sp_name ([proc_parameter[,…]]) [characteristic …] routine_body
create procedure 建立儲存過程關鍵字
sp_name 儲存過程名稱
proc_parameter 引數
characteristic 約束
routine_body 執行體,使用BEGIN— END包括
proc_parameter
IN | OUT | INOUT param_name type
characteristic
language SQL 執行體
[not] deterministic 得出的結果是否確定,不帶NOT 出入相同,預設帶NOT
constains SQL 不包含讀寫SQL , no sql 不包含sql語句, reads sql data 讀資料的sql, modifies sql data 包含讀sql語句, 預設contains sql
sql security definer 只有建立者菜能執行 invoker 表示有許可權存取的就可執行
comment 註釋
下面是建立一個儲存過程的定義,在對應的工具中找到建立儲存過程的地方。
create PROCEDURE SelectAllData() begin select * from t_goods; end
建立好的儲存過程
create function func_name (func_parameter[,…]) returns type [characteristic …] routine_body
create function 建立儲存函數關鍵字
func_name 儲存函數名字
func_parameter 引數,儲存函數只能是IN
returns type 返回資料型別
characteristic 函數約束
routine_body SQL執行體
show create procedure sp_name
show procedure status like ‘’
從資料庫中information_schema中查詢
call 呼叫
drop 刪除
alter 修改
declare var_name[,…] type [default value]
declare 定義變數關鍵字
var_name 變數名稱
type 型別
[default value] 預設值
declare totalprice decimal(10,2) default 0.00;
set 賦值
set totalprice = 399.99
查詢賦值
select sum(t_price) into totalprice from t_goods
建立一個儲存過程使用變數的例子
CREATE DEFINER=`root`@`localhost` PROCEDURE `SelectCountAndPrice`() begin declare totalcount int default 0; declare totalprice, avgprice decimal(10, 2) default 0.00; select count(*) into totalcount from t_goods; select sum(t_price) totalprice from t_goods; set avgprice = totalprice / totalcount; select totalprice,totalcount,avgprice; end
declare condition_name condition for condition_value
condition_name 條件名稱
condition_value 條件型別
SQLSTATE [value] sqlstate_value | mysql_error_code
sqlstate_value 長度為5的錯誤資訊
mysql_error_code 數值型別的錯誤程式碼
declare exec_refused condition for sqlstate ‘48000’;
declare handler_type handler for condition_value[,…] sq_statement
handler_type 定義錯誤的處理方式
condition_value 錯誤型別
sq_statement 遇到錯誤,需要執行的儲存過程或函數
handler_type
continue 繼續處理
exit 退出
undo 撤回,目前不支援
condition_value
sqlstate [value] sqlstate_value
condition_name
sqlwarning
not found
sqlexception
mysql_error_code
declare continue handler for sqlstate ‘29011’ set @log=’ database not found ’
CREATE DEFINER=`root`@`localhost` PROCEDURE `InsertDataNoCondition`() BEGIN set @x = 1; insert into t_goodss (id,t_cate,t_remake,ages) values (3,'22','3333',10); set @x = 2; insert into t_goodss (id,t_cate,t_remake,ages) values (4,'22','3333',10); set @x = 3; END
儲存過程查詢資料打,使用遊標對結果集迴圈處理。
宣告遊標
declare cursor_name cursor for select_statement;
cursor_name 遊標名稱
select_statement 查詢語句
開啟遊標
open cursor_name
使用遊標
fetch cursor_name into var_name[,…]
關閉遊標
close cursor_name
例子
定義一個StatisticsPrice的儲存過程,引數是totalprice,定義cursor_price 遊標,將查詢的結果使用repeat 語句賦值於cursor_price,計算結果。
CREATE PROCEDURE StatisticsPrice(OUT totalprice DECIMAL(10, 2)) BEGIN #Routine body goes here... declare price decimal(10,2) DEFAULT 0.00; declare cursor_price cursor for select t_price from t_goods; declare exit HANDLER FOr not found close cursor_price; set totalprice = 0.00; open cursor_price; repeat FETCH cursor_price into price; set totalprice= totalprice + price; until 0 END repeat; close cursor_price; END
if
loop (leave 退出當前流程,iterate 跳出本次迴圈)
while
case
以上就是詳解MySQL中的儲存過程和函數的詳細內容,更多關於MySQL儲存過程 函數的資料請關注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