MySQL 存儲過程

1、局部變量

在存儲過程體中可以聲明局部變量,用來存儲存儲過程體中臨時結(jié)果。

DECLARE var_name[,…] type [DEFAULT value] 
var_name:指定局部變量的名稱 
type:用于聲明局部變量的數(shù)據(jù)類型 
default子句:用于為局部變量指定一個默認(rèn)值。若沒有指定,默認(rèn)為null.

使用說明:
局部變量只能在存儲過程體的begin…end語句塊中聲明。
局部變量必須在存儲過程體的開頭處聲明。
局部變量的作用范圍僅限于聲明它的begin..end語句塊,其他語句塊中的語句不可以使用它。
局部變量不同于用戶變量,兩者區(qū)別:局部變量聲明時,在其前面沒有使用@符號,并且它只能在begin..end語句塊中使用;而用戶變量在聲明時,會在其名稱前面使用@符號,同時已聲明的用戶變量存在于整個會話之中。

2、SET 語句

使用set語句為局部變量賦值

SET var_name=expr  
SET cid=910; 

3、SELECT… INTO 語句

把選定列的值直接存儲到局部變量中,語法格式

SELECT col_name[,…] INTO var_name[,…] table_expr 
col_name:用于指定列名 
var_name:用于指定要賦值的變量名 
table_expr:表示select語句中的from字句及后面的語法部分 

說明:存儲過程體中的select…into語句返回的結(jié)果集只能有一行數(shù)據(jù)。

4、定義處理程序

是事先定義程序執(zhí)行過程中可能遇到的問題。并且可以在處理程序中定義解決這些問題的辦法。這種方式可以提前預(yù)測可能出現(xiàn)的問題,并提出解決方法。

DECLARE handler_type HANDLER FOR condition_value[,…] sp_statement 
handler_type:CONTINUE | EXIT | UNDO 
Condition_value:Sqlwarning | not found | sqlexception

5、IF語句

IF search_condition THEN statement_list 
[ELSEIF search_condition THEN statement_list]… 
[ELSE statement_list] 
END IF

Search_condition參數(shù):條件判斷語句
Statement_list參數(shù):不同條件的執(zhí)行語句
多重IF的存儲過程實(shí)例

6、CASE 語句

CASE case_value 
WHEN when_value THEN statement_list 
[WHEN when_value THEN  statement_list]… 
[ELSE statement_list] 
END CASE

7、WHILE 語句

WHILE search_condition DO
Statement_list 
END WHILE 

判斷條件search_condition是否為真,若為真,則執(zhí)行statement_list中的語句,然后再進(jìn)行判斷,如若仍然為真則繼續(xù)循環(huán),直至條件判斷不為真時循環(huán)結(jié)束。

8、REPEAT 語句

REPEAT 
Statement_list 
UNTIL search_condition 
END REPEAT  

Repeat語句首先執(zhí)行statement_list中的語句,然后判斷條件search_condition是否為真,倘若為真,則結(jié)束循環(huán),若不為真,繼續(xù)循環(huán)。
Repeat先執(zhí)行后判斷,while先判斷后執(zhí)行。

9、LOOP 語句

test:LOOP
SET s1 = s1+1;
IF s1 = 5 THEN
LEAVE test;
END IF;
END LOOP;

LOOP沒有循環(huán)條件,會不停的循環(huán)直到遇到 "LEAVE test;" "test"是自定義的LOOP標(biāo)記

10、PREPARE 語句

PREPARE statement_name FROM sql_text /*定義*/   
EXECUTE statement_name [USING variable [,variable...]] /*執(zhí)行預(yù)處理語句*/   
DEALLOCATE PREPARE statement_name /*刪除定義*/   
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 存儲過程和函數(shù)是事先經(jīng)過編譯并存儲在數(shù)據(jù)庫中的一段 SQL 語句的集合,調(diào)用存儲過程和函數(shù)可以簡化應(yīng)用開發(fā)人員的很...
    微日月閱讀 1,937評論 0 1
  • 原文鏈接 MySQL存儲過程詳解 1.存儲過程簡介 我們常用的操作數(shù)據(jù)庫語言SQL語句在執(zhí)行的時候需要要先編譯,然...
    亞斯咪妮閱讀 2,731評論 1 30
  • 轉(zhuǎn)載自這里 存儲過程簡介 我們常用的操作數(shù)據(jù)庫語言SQL語句在執(zhí)行的時候需要要先編譯,然后執(zhí)行,而存儲過程(Sto...
    杜七閱讀 2,477評論 4 27
  • 轉(zhuǎn)載自-> 記錄MYSQL存儲過程中的關(guān)鍵語法:DELIMITER //聲明語句結(jié)束符,用于區(qū)分;CREATE P...
    風(fēng)亡小窩閱讀 71,039評論 5 78
  • 任務(wù)需求:定時執(zhí)行的任務(wù),調(diào)用存儲過程,進(jìn)行數(shù)據(jù)遷移。 存儲過程相關(guān)總結(jié):(存儲過程的創(chuàng)建 不能伴隨有if exi...
    時待吾閱讀 3,217評論 0 4

友情鏈接更多精彩內(nèi)容